atomic的意思就是setter/getter这个函数是一个原语操作。如果有多个线程同时调用setter的话,不会出现某一个线程执行setter全部语句之前,另一个线程开始执行setter情况,相当于函数头尾加了锁一样。 nonatomic不保证setter/getter的原语行,所以你可能会取到不完整的东西。 比如setter函数里面改变两个成员变量,如果你用nonatomic的话,getter可能会取到只更改了其中一个变量时候的状态。
atomic是线程安全的,nonatomic是线程不安全的。如果只是单线程操作的话用nonatomic最好,因为后者效率高一些。
本文解析了Objective-C中atomic和nonatomic的区别。atomic确保setter/getter操作的原子性,适用于多线程环境,但效率较低;nonatomic不保证原子性,适用于单线程,效率较高。文章详细解释了这两种属性对内存管理和并发访问的影响。
734

被折叠的 条评论
为什么被折叠?



