iOS assign、copy 、retain等关键字的含义及区别

来源:互联网 发布:高清网络摄像机怎么接 编辑:程序博客网 时间:2024/05/15 00:57
 assign: 简单赋值,不更改索引计数(Reference Counting)对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)
 copy: 建立一个索引计数为1的对象,然后释放旧对象,它是重新开辟内存空间,使得此空间值与原有值相同;对NSString对象

 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1;对其他NSObject和其子类

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,原子操作是必要的,否则有可能引起读写错误的结果。加了atomic,setter函数会变成下面这样:
if (property != newValue) {
[property release];
property = [newValue retain];
}

nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。


0 0
原创粉丝点击