atomic通过锁定机制保证操作的原子性,某个线程在修改属性时,另一个线程不能突然闯入读取尚未修改好的属性值,
而nonatomic会发生这种情况,线程读到的属性值可能不对.
为什么ios中所有的属性都都声明为nonatomic呢?
因为ios中使用同步锁的开销较大,这会带来性能问题.一般情况下,并不要求属性必须是原子的,因为这不能完全保证线程安全,要是行线程安全还要更深层的锁定机制才可以.
另外:开发MAC OS X 时 用atomic就不会有性能问题.
atomic通过锁定机制保证操作的原子性,某个线程在修改属性时,另一个线程不能突然闯入读取尚未修改好的属性值,
而nonatomic会发生这种情况,线程读到的属性值可能不对.
为什么ios中所有的属性都都声明为nonatomic呢?
因为ios中使用同步锁的开销较大,这会带来性能问题.一般情况下,并不要求属性必须是原子的,因为这不能完全保证线程安全,要是行线程安全还要更深层的锁定机制才可以.
另外:开发MAC OS X 时 用atomic就不会有性能问题.