oc@property屬性

assign: 簡單的賦值 ?不會更改索引計數(Reference counting),這個屬性一般用來處理基礎類型(NSInteger,CGFloat和C語言的 int double floatchar ?...),如果你聲明的屬性是基礎類型的話,assign是默認的,你可以不加這個屬性.

retain: 釋放舊的對象將舊對象的值賦予輸入對象并將輸入對象的索引計數+1 ,主要應用與NSObject與其子類中.

copy: 創建一個索引計數為1的對象釋放掉原來的對象

readonly: ?表示只讀屬性 ?只會生成getter方法不會生成setter方法.

readwrite:設置可供訪問的級別,可讀寫,對比readonly。

nonatimic:非原子訪問,不加同步,多線程并發訪問提高性能(對多線程的保護,防止在未寫完,被另一個線程讀取,造成數據錯)。

iOS 5 中對屬性的設置新增了strong 和weak關鍵字來修飾屬性

strong 用來修飾強引用的屬性;

@property (strong) SomeClass * aObject;

對應原來的

@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;

weak 用來修飾弱引用的屬性;

@property (weak) SomeClass * aObject;

對應原來的

@property (assign) SomeClass * aObject

__weak, __strong 用來修飾變量,此外還有 __unsafe_unretained, __autoreleasing 都是用來修飾變量的。

? ? ?__strong 是缺省的關鍵詞。

? ? ?__weak 聲明了一個可以自動 nil 化的弱引用。

? ? ?__unsafe_unretained 聲明一個弱應用,但是不會自動nil化,也就是說,如果所指向的內存區域被釋放了,這個指針就是一個野指針了。

? ? ?__autoreleasing 用來修飾一個函數的參數,這個參數會在函數返回的時候被自動釋放。

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

推薦閱讀更多精彩內容