- assign: 直接赋值, 不进行任何retain操作. 主要适用于NSInteger等基础类型, 以及short/ float/ double/ 结构体等各种数据类型
- retain: 对象赋值给该属性时, release旧值(引用计数-1), 再retain新值(引用计数+1)
- copy: 被赋值的对象复制一个副本(新内存地址), 再将该副本赋值给该属性. 副本引用计数为1, 原来对象计数不变
- atomic/ nonatomic: 是否为原子操作, 主要是指是否线程安全. 若为atomic(默认), 则当一个线程进入setter/ getter的方法体时, 其它线程无法进入该setter/ getter. atomic可以保证对象数据的完整性, 但其线程安全会造成性能下降.
- strong/ weak: 只要对象被strong强引用, 该对象就不会被自动回收; 即使对象被weak弱引用, 该对象也可能被回收, 一旦weak指针指向的地址被释放, 这些指针都将被赋值nil(避免了”野指针”)
- unsafe_unretained: 与weak类似, 但unsafe_unretained指针所引用的对象被回收后, 该指针不会被赋为nil
- readonly/ readwrite: readonly只合成getter方法, 不合成setter方法; readwrite(默认)合成setter和getter方法
- getter/ setter: 用于为合成的getter/ setter方法指定自定义方法名
iOS开发--@property各种属性的区别
最新推荐文章于 2024-09-20 09:13:57 发布