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 用來修飾一個函數的參數,這個參數會在函數返回的時候被自動釋放。