【发布时间】:2016-12-21 15:30:14
【问题描述】:
我搜索了很多链接并阅读了很多文章,但我找不到 retain 和 assign 的确切区别..
我正在尝试以下方法:
NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3", nil];
NSMutableArray *arr2=[arr1 retain];
NSMutableArray *arr3 = arr1; //Assign
[arr1 addObject:@"66"];
NSLog(@"Array one : %@",arr1);
NSLog(@"Array two : %@",arr2);
NSLog(@"Array three : %@",arr3);
输出:
Array one : (
1,
2,
3,
66
)
Array two : (
1,
2,
3,
66
)
Array three : (
1,
2,
3,
66
)
上面的例子给了我同样的输出。
考虑到上面的例子,我如何定义assign和retain之间的区别?
如果上面的例子是错误的,请给出更好的例子。
【问题讨论】:
-
不应再使用保留。使用 ARC,但要回答您的问题(并假设您没有使用 ARC),如果您这样做
[arr2 release],请查看 arr3 会发生什么
标签: ios objective-c memory-management automatic-ref-counting reference-counting