主要说一下retain和copy的区别,先把做实验用的代码和结果贴上
1.h文件中声明三个property,分别带有copy,retain,nonatomic的属性
@property (copy,nonatomic)NSString *testForCopy;
@property (retain,nonatomic)NSString *testForRetain;
@property (nonatomic)NSString *testForNone;
NSMutableString *testCase=[[NSMutableStringalloc]initWithString:@"test"];
self.testForCopy=testCase;
self.testForNone=testCase;
self.testForRetain=testCase;//此处设置断点
(lldb)po self.testForCopy.retainCount
1
(lldb)po self.testForNone.retainCount
3
(lldb)po self.testForRetain.retainCount
3
(lldb)po testCase.retainCount
3
根据结果可以判断出,总共初始化一次,赋值了三次,testCase的retainCount变成了3
所以copy并不增加retainCount,而什么都不写和retain一样,都各自增加了一次retainCount.