属性readwrite、readonly、assign、reta

2016-07-23  本文已影响180人  西门丨不吹雪

1.readwrite:修饰对象可读可写,会生成getter和setter方法
2.readonly:修饰对象仅可读,只生成getter方法
3.assign:修饰基本数据类型(NSInteger,CGFloat)和C数据类型(int, float, double, char)
4.retain:修饰对象类型,指定强引用与strong一样,引用计数+1
5.copy:深拷贝,源对象引用计数不变,副本对象引用计数+1,常用修饰字符串

6.nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,不用耗费系统资源,可以提高效率。

总结
关于nonatomic是线程不安全的,当有多个线程同时修改属性name的值的时候,拿到的结果可能不是自己想要的,因为当属性设置nonatomic的话是允许多个线程是可以同时修改name的值。
简单来说atomic是串行,nonatomic是并行,但如果要真正实现防止多线程修改某属性的值的时候,单单设atomic是不够的,还需要更完善的防止手法

上一篇 下一篇

猜你喜欢

热点阅读