property屬性使用大全

Property有很多的屬性,總結一下都是幹什麼用的

1.和多線程相關的參數:

atomic原子性,多線程環境下訪問屬性是安全的,生成的getter和setter方法中加入了局部鎖,在執行過程中不可被打斷,但是對效率有影響,如果不寫系統默認爲atomic;

nonatomic非原子性,生成的getter和setter方法沒有局部鎖,但在多線程環境下訪問屬性容易造成數據丟失,效率比atomic要高,因此,在使用頻繁且不用考慮多線程競爭的情況下儘量用nonatomic;

 

2.生成setter方法相關參數:

assign:用assign生成的setter方法直接對對象賦值,系統默認情況下爲assign;

retain:生成的setter是標準的MRC管理代碼,先判斷,然後release,再retain;

copy:複製對象,通常用於保證字符串安全,其setter方法中先判斷,然後release,再copy;

詳細內容請參考http://blog.csdn.net/xgcyangguang/article/details/51177906

 

3.讀寫屬性:

readonly:只讀屬性,只生成getter方法沒有setter方法,不希望屬性被修改的時候使用;

readwrite:讀寫屬性,系統默認,同時生成getter方法和setter方法;

 

4.強弱引用屬性

strong:強引用,只能用在ARC模式下,作用同retain一樣;

weak:弱引用,同樣只能用於ARC模式,對象在沒有引用的時候會及時回收,也可避免造成循環引用

詳細內容請參考http://blog.csdn.net/xgcyangguang/article/details/51096498

 

5.總結:

(1)在平時的開發中,一般情況下UI控件都用weak;

(2)NSString類型的都用copy;

(3)屬性的類型是OC對象的用retain;屬性類型是非OC對象的用assign;

(4)對象都用strong;

(5)出現兩個屬性相互引用的時候一定要一個strong一個weak;

 

歡迎大家積極補充指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章