@property的屬性

1 assign、retain、copy區別

assign: 普通賦值,通常用於基本數據類型(包括結構體),常見委託設計模式,以防止循環引用,不會添加索引計數設計模式

retain: 保留計數,得到對象全部權。引用計數在原來的基礎上+1多線程

copy:   通常用於字符串,Foundation中不可變對象至關於retain,只是引用技術+1併發

nonatomic:非原子性訪問,不加同步,多線程併發會提升性能性能

 

2 strong與weak的區別

strong叫強引用,weak叫弱引用,在ARC中,使用strong會告訴編譯器自動插入retain,waek至關於手動管理內存的assignatom

 

3 _unfase_unretained與weak的區別

功能一致,區別在於當指向的對象銷燬後,weak會將變量置爲nil,防止調用野指針。spa

 

4 readonly的注意

不用readonly的時候,編譯器會默認生成setter和getter的聲明和實現、_開頭的成員變量線程

若是添加了readonly的屬性,編譯器會默認生成getter的聲明和實現、_開頭的成員變量。但若是手動實現了getter方法(例如懶加載),那麼編譯器就不會再幫自動咱們生成getter的實現和_開頭的成員變量(但仍是會生成self開頭的成員變量)。當咱們須要用到_成員變量的時候,須要本身初始化,例如_arr = [NSMutableArray array];如此以後,self.arr 和 _arr是同樣意義的,指向的內存也同樣.設計

相關文章
相關標籤/搜索