- @public 修飾的實例變量在類外部有
->
訪問 - 定義一個屬性會自動有如下規則
1.自動生成訪問方法
2.自動生成實例變量
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進行操作
- @dynamic關鍵字修飾告訴編譯器屬性自動生成的setter,getter方法無效,用戶自定義訪問方法。
- 當重寫了屬性的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;
}