内存管理属性
retain:浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。
copy:对于可变对象为深复制,引用计数不变;对于不可变对象是浅复制,引用计数加一。返回一个不可变对象。
mutableCopy:深复制,引用计数不变。返回一个可变对象。
先有内存空间,属性指针指向内存空间,内存管理是属性中内存管理的模式
1,多个属性指向同一个内存空间
self.testA = @"testA";
self.copA = self.testA;
self.strongA = self.testA;
NSLog(@"testA:%@,%p,%p",_testA,_testA,&_testA);
NSLog(@"copA:%@,%p,%p",_copA,_copA,&_copA);
NSLog(@"strongA:%@,%p,%p",_strongA,_strongA,&_strongA);
输出结果:
testA:testA,0x1091902b0,0x7fc12b407228
copA:testA,0x1091902b0,0x7fc12b407230
strongA:testA,0x1091902b0,0x7fc12b407238
2,可变对象指向不可变对象,进行可变对象的操作会引起崩溃
网友评论