ARC\\MRC下property關鍵字的用法

? ?使用屬性關鍵字前,需要先理解屬性關鍵字的作用。其實《簡單來說...》就是指導底層如何生成set、get方法的,如果不自己定義set、get方法,系統將會自動為你生成,但如何生成依據的就是這些屬性關鍵字,不同的屬性關鍵字的組合將決定set、get方法的具體實現,實現不同,功能自然也就不同了...

----------------------------------------------------------------------------------------------------------------------------------------

ARC:

1、assign:基本數據類型、枚舉、結構體等非OC對象類型。

2、strong/retain:使用必須滿足兩個條件,一是必須是OC對象類型,二是需要被強引用不能'隨便'釋放。

3、weak:

1)別人創(chuàng)建別人擁有,你只是借用一下而已,隨時可能會不見,但不見的時候你可以發(fā)現。

2)使用時必須滿足兩個條件,一是必須是OC對象類型,二是自己不直接擁有的對象。比如delegate,parentviewcontroller等,以防止循環(huán)引用。

3)weak有一個大招,就是當所指對象被釋放的時候會自動置為nil。實現的原理《簡單來說...》就是每一個strong維護一個weaktable,當把一個strong對象賦值給weak對象時,weaktable中就記錄該weak對象,當strong釋放時就把weaktable中所有的對象取出來挨個置為nil。

4、copy:用于block。用于NSString、NSDictionary、NSArray等有Mutable類型的類,此處可以理解為(copy=不可變)。經過測試后發(fā)現當把NSString對象賦給copy類型的NSString時,地址未發(fā)生改變相當于淺拷貝和strong效果一樣,但把NSMutableString賦給copy類型的NSString時地址發(fā)生改變,此處相當于深拷貝。

5、readonly/readwrite:只讀/可讀寫.

6、atomic/nonatomic:原子操作/非原子,《簡單來說...》就是是否線程安全,但通過此方法來保證線程安全開銷是很大滴,如果條件允許還是在適合的地方加鎖靠譜。

7、getter/setter:以上都無所謂了,自己寫set、get方法。

----------------------------------------------------------------------------------------------------------------------------------------

MRC:

1、assign:基本數據類型、枚舉、結構體等非OC對象類型。也可用于delegate\\parentviewcontroller等不直接擁有的對象,作為MRC下weak的替代品。

2、retain:使用必須滿足兩個條件,一是必須是OC對象類型,二是需要被強引用不能'隨便'釋放。

3、unsafe_unretained:

1)別人創(chuàng)建別人擁有,你只是借用一下而已,隨時可能會不見,并且不見的時候連個招呼都不打。與ARC中weak的區(qū)別就是不會自動置為nil。

2)使用時必須滿足兩個條件,一是必須是OC對象類型,二是自己不直接擁有的對象。

3)與assign的唯一區(qū)別就是不能用于基本數據類型。

4、copy:用于block。用于NSString、NSDictionary、NSArray等有Mutable類型的類,此處可以理解為(copy=不可變)。經過測試后發(fā)現當把NSString對象賦給copy類型的NSString時,地址未發(fā)生改變相當于淺拷貝和strong效果一樣,但把NSMutableString賦給copy類型的NSString時地址發(fā)生改變,此處便想當于深拷貝了。

5、readonly/readwrite:只讀/可讀寫.

6、atomic/nonatomic:原子操作/非原子,《簡單來說...》就是是否多線程安全,但通過此方法來保證多線程安全開銷是很大滴,如果條件允許還是在適合的地方加鎖靠譜。

7、getter/setter:以上都無所謂了,自己寫set、get方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容