@property 是一種代碼生成機制,能自動生成不同類型的 getter/setter 方法。若想使用點語法(.)存取變量,必須使用 @property。
@property (attribute1, attribute2) float value;
NSInteger、CGRect)或不擁有所有權的對象(如 delegate)。assign 僅做簡單賦值,用於基本數據類型或不擁有所有權的對象。在垃圾回收環境下 retain 和 assign 行為一致。生成的 setter 代碼類似:
- (void)setValue:(float)newValue {
value = newValue;
}
關鍵提醒:使用 property 時務必加 self. 前綴(如 self.xxx),否則直接訪問實例變量會繞過 setter,導致內存管理錯誤(如漏掉 retain/release),造成內存洩漏或崩潰。