property是一種代碼生成機制,能夠生成不同類型的getter/setter函數,特別是如果你想要用點(.)操作符號來存取變量的話,你就能必須使用property。
如何使用?
用法如:@property (attribute1,attribute2) float value;
這些attribute包括:
readonly-只讀,只能讀取而不能設定值(不能用setXXXX的函式)。
readwrite-可讀可寫(默認)。
assign-在設值時替換新舊變量(默認)。
retain-在設值時retain新的變量,release舊變量。
copy-在設值時copy一份新變量,release舊變量。
nonatomic-默認為atomic。
strong - 在引用計數環境下,默認為strong,與retain作用相同;
從5.0系統後引入了weak,作用與assign相似,不過當所指向對象引用為0時,自動置為nil。
前兩個只是簡單的設定變量的可讀寫性。
assign只是簡單的替換變量,通常運用在標量類型上,例如:NSInterger和CGRect,
或者(在引用計數環境)為那些你不擁有的對象,例如:delegates。
在垃圾收集環境下retain 和 assign實際上是相同的。
它的產生的setter代碼內容類似:
- (void)setValue:(float)newValue {
value = newValue;
}
還有一點非常要注意的就是,在使用property時一定要在前面帶上self(如:self.xxx),如果你不這樣做,容易造成內存洩漏。