assign,copy,retain其间区别
assign,copy,retain之间区别* assign: 简单赋值,不更改索引计数(Reference Counting)。* copy: 建立一个索
assign,copy,retain之间区别
* assign: 简单赋值,不更改索引计数(Reference Counting)。* copy: 建立一个索引计数为1的对象,然后释放旧对象* retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
还可以这样理解:
* 使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)* 使用copy: 对NSString* 使用retain: 对其他NSObject和其子类
总结:
copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。
1 楼 tsyouaschen 2011-03-16 assign表示直接传递引用给属性值
retain表示将某个对象引用传递给属性值时,属性值会将引用计数加一,也就是说,属性会自己额外保留一份引用.
举例子说.
NSObject a= [[NSObject alloc] init];
classb.oneProperty = a;
[a release];
如果是assign的话,a被release之后,classb的oneProperty就不能再被使用.
如果是retian的话,a被release之后,classb的oneProperty就可以继续使用.
assign主要是int,long,bool原始数据类型.你可以试一试当你用原始数据类型retain的时候,编译会报错的。 2 楼 deng131 2011-03-16 恩 很好的理解