atomic
原子操作:操作的最小单位;在操作结束后才能进行下一次操作;
@property(atomic, copy) NSString *string
atomic保证string的setter和getter方法原子操作;例如在setter进行setter前不能进行下一次setter操作;但是原子操作在多线程中不能保证线程安全。
在方法中加入spinlock_t,会增加系统资源消耗,操作速度降低。(ps:spinlock_t名称是自旋锁,实际使用的是互斥锁);
nonatomic
非原子操作
@property(nonatomic, copy) NSString *string
在多线程中调用setter/getter会造成无法确定的结果
线程不安全,操作快
想保证某阶段线程安全,加锁,把该阶段通过加锁成为原子操作