Objective-C语法之nonatomic和atomic之间的区别

atomic:

保证 setter/getter 这两个方法的一个原语操作。如果有多个线程同时调用 setter 的话,不会出现某一个线程执行 setter 全部语句之前,另一个线程开始执行 setter 情况,相当于方法头尾加了锁一样。

nonatomic:(一般情况推荐用)

不保证 setter/getter 这两个方法的一个原语操作,所以你可能会取到不完整的东西。 比如 setter 方法里面改变两个成员变量,如果你用 nonatomic 的话,getter 可能会取到只更改了其中一个变量时候的状态。

关键区别:atomic 是线程安全的,nonatomic 是线程不安全的。如果只是单线程操作的话用 nonatomic 最好,因为后者效率高一些。