08-Objective-C特有語法:@property、@synthesize 1.@property 使用在@interface中 用來自動生成setter(設置器)和getter(構造器)的聲明 用@property int age;就可以代替一下這些代碼: - (void)setAge:(int)age; // setter - (int)age; // getter 2.@synthesize 使用於@implementation中 用來自動生成setter(設置器)和getter(構造器)的實現 用@synthesize age = _age就可以代替下面這些代碼: - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } 如果成員變量_age不存在,就會自動生成一個@private私有的變量_age(因為_age聲明在@implementation中,故為私有的) 如果為@synthesize age; 此時為指明要去實現哪個age,如果.h文件中又聲明一個同名的age成員變量,就會去實現它的setter和getter,否則,在@implementation中自動生成一個age變量,再實現age的setter和getter方法 如果手動實現了setter方法,編譯器就會自動實現getter方法 同理,若手動實現了getter方法,編譯就會自動實現setter方法 若setter和getter都同時實現了,那麼編譯器就不會自動生成不存在的成員變量 3.Xcode4.4以後:特性 @property囊括了@synthesize的功能,即在@interface中聲明@propery int age; 編譯器就在.h文件中自動生成了setter和getter方法聲明和實現 默認情況下是去訪問下劃線_age的成員變量 此時,@proterty自動生成的成員變量默認就是@protect受保護的(因為在.h文件中聲明的成員變量,默認是@protect)