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

atomic 與 nonatomic 的區別:

1、具備 atomic 特質的獲取方法會通過鎖定機制來確保其操作的原子性。也就是說,如果兩個線程同時讀寫同一屬性,那么不論何時,總能看到有效的屬性值,若是不加鎖的話(即使用 nonatomic),那么當其中的一個線程改變某屬性時,另一個線程也會突然闖入,把尚未修改好的值都出來,發生這種情況時,線程讀到的屬性值可能不對。

2、在 iOS 開發中使用同步鎖的開銷較大,這會帶來性能問題。一般情況下并不要求屬性必須是 “原子” 的,因為這并不能保證 “線程安全”,若要實現 “線程安全” 的操作,還需要采用更為深層的鎖定機制才行。在 iOS 開發中一般都會使用nonatomic 屬性,在 macOS 開發中,使用 atomic 屬性,通常都不會有性能瓶頸。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容