@property
- 用在
中@interface
- 用來自動生成
和setter
的聲明getter
- 用
就可以代替下面的兩行@property int age;
- (int)age; // getter
- (void)setAge:(int)age; // setter
@synthesize
- 用在
中@implementation
- 用來自動生成
和setter
的實作getter
- 用
就可以代替@synthesize age = _age;
- (int)age
{
return _age;
}
- (void)setAge:(int)age
{
_age = age;
}
@synthesize 的細節
@synthesize age = _age;
- setter 和 getter 實作中會通路成員變量 _age
- 如果成員變量 _age 不存在,就會自動生成一個 @private 的成員變量 _age
@synthesize age;
- setter 和 getter 實作中會通路成員變量 age
- 如果成員變量 age 不存在,就會自動生成一個 @private 的成員變量 age
手動實作
- 若手動實作了 setter 方法,編譯器就隻會自動生成 getter 方法
- 若手動實作了 getter 方法,編譯器就隻會自動生成 setter 方法
- 若同時手動實作了 setter 和 getter 方法,編譯器就不會自動生成不存在的成員變量
@property 新特性
- 自動 Xcode 4.x 後,@property 就獨攬了 @synthesize 的功能,也就是說,@property 可以同時生成 setter 和 getter 的聲明和實作
- 預設情況下, setter 和 getter 方法中的實作,會去通路下劃線 _ 開頭的成員變量
新部落格文章位址:@property 和 @synthesize 總結