實例變量和屬性-ObjectiveC

  1. @public 修飾的實例變量在類外部有->訪問
  2. 定義一個屬性會自動有如下規則
    1.自動生成訪問方法
    2.自動生成實例變量
    3.可以更簡單地調用訪問方法
  3. @synthessize后面只能跟屬性,不能跟實例變量,并為屬性生成getter,setter方法
//屬性的實現
@synthesize brand=(brand), price(=price), color; //屬性的實現可以省略
//自動生成一個實例變量brand... 綁定到相應的屬性brand...上
//2.setter和getter方法對實例變量brand進行操作

如果不寫屬性的實現

//如果不寫屬性的實現, 系統默認補上的形式
@synthesize brand = _brand, price = _price, color = _color;
//1.自動生成一個實例變量_brand
//2.setter和getter方法對實例變量_brand進行操作
  1. @dynamic關鍵字修飾告訴編譯器屬性自動生成的setter,getter方法無效,用戶自定義訪問方法。
  2. 當重寫了屬性的setter,getter方法后,系統默認補上的@synthesize age = _age就失效了
//當同時重寫setter和getter后, @synthesize age = _age; 就失效了
//解決方案:自己補上 @synthesize age = _age
@synthesize age = _age;
//當屬性生成的setter方法不滿足需求時, 可以重寫setter方法
- (void)setAge:(NSInteger)age {
    if (age > _age) {
        _age = age;
    }
}
//當屬性生成的getter方法不滿足需求時, 可以重寫getter方法
- (NSInteger)age {
    return _age - 2;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容