Objective-C中的属性特性

来源:互联网 发布:linux创建属性目录命令 编辑:程序博客网 时间:2024/05/16 11:34

assign:用于基本数据类型,直接赋值。也可以用于对象,只不过当setter方法赋值时,只是简单存储地址,不会造成引用计数的改变,可以解决循环引用问题。

retain:用于对象类型,当赋值时,先将旧值释放,对新值retain引用计数加1

copy:用于对象类型,根据实现的NSCopying协议的copyWithZone:方法的不同,可以实现伪拷贝,浅拷贝,深拷贝。

readwrite: 可读可写特性。 当属性生成方法时,既生成setter方法,也生成getter方法。

readonly :只读特性 。当属性生成方法时,只会生成getter方法, 不会生成setter方法。

nonatomic :非原子性访问,当调用setter以及getter方法访问实例变量时,不会保证线程安全,但是访问效率高。

atomic:原子性访问,当调用setter以及getter方法访问实例变量时,会加多线程处理,访问时加锁,访问结束解锁,安全性高,但是访问效率低。

0 0