《Effective Objective-C 2.0》摘抄(2)- nonatomic 与 atomic

atomic 与 nonatomic 的区别:

1、具备 atomic 特质的获取方法会通过锁定机制来确保其操作的原子性。也就是说,如果两个线程同时读写同一属性,那么不论何时,总能看到有效的属性值,若是不加锁的话(即使用 nonatomic),那么当其中的一个线程改变某属性时,另一个线程也会突然闯入,把尚未修改好的值都出来,发生这种情况时,线程读到的属性值可能不对。

2、在 iOS 开发中使用同步锁的开销较大,这会带来性能问题。一般情况下并不要求属性必须是 “原子” 的,因为这并不能保证 “线程安全”,若要实现 “线程安全” 的操作,还需要采用更为深层的锁定机制才行。在 iOS 开发中一般都会使用nonatomic 属性,在 macOS 开发中,使用 atomic 属性,通常都不会有性能瓶颈。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容