天天看點

OBjective-C:atomic和nonatomic的差別

atomic和nonatomic的差別:

atomic: 設定成員變量的@property屬性時,預設為atomic,提供多線程安全。因為多線程的緣故,所有的對象在操作成員變量時都是同步的,是以,為了防止一個對象在操作資料時還沒有結束就被另一個對象搶走進行篡改,atomic為此提供了多線程安全機制,采用同步加鎖的方式,來控制程序的歸屬權。

即:

        {lock} //第一個對象擷取操作資料後,給自己的程序加鎖,别人在我沒有釋放鎖之前就無法再去搶奪了。

                if (property != newValue) { 

                 [property release]; 

                 property = [newValue retain]; 

                 }

        {unlock}//該對象操作完資料後,就釋放了同步鎖,别人就可以擷取這個資料進行自己的操作了。

說明:鎖必須是唯一的。

nonatomic: 設定成員變量的@property屬性時,設定nonatomic,禁止多線程。這就直接消除了資料操作過程中被被另一方篡改的可能性。如果不是多線程,一般就采用這種設定。

程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!

本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/4737132.html,如需轉載請自行聯系原作者

繼續閱讀