在聲明property屬性後,有2種實現選擇
@synthesize
編譯器期間,讓編譯器自動生成getter/setter方法。
當有自定義的存或取方法時,自定義會屏蔽自動生成該方法
@dynamic
告訴編譯器,不自動生成getter/setter方法,避免編譯期間產生警告
然後由自己實現存取方法
或存取方法在運行時動態創建綁定:主要使用在CoreData的實現NSManagedObject子類時使用,由Core Data框架在程序運行的時動態生成子類屬性
總結:
1:程序中定義 "變量類型*變量名;" , 使用@synthesize 變量名;然後他會默認生成的代碼名稱符合如下格式:
//get方法:
-(變量類型*) 變量名()
{
return 變量名;
}
//set方法:
-(void) set變量名(變量類型*newValue) //注意這裏的變量名首字母是大寫的
{
//具體的實現方式根據@property的屬性不同而不同, copy, retain, strong, assign,nonatomic, atomic等。
}
2:當程序中使用 self.變量名與直接 變量名 是不一樣的。
self.變量名: 訪問的是屬性方法,具體是get還是set就需要看是寫在左邊還是右邊了。
變量名:訪問的就是屬性本身。
3:具體 set的方法實現與@property 具體聲明有關。
4:@synthesize 相對於@dynamic 而前,自動添加申明屬性變量,同時還爲其添加了get 與 set 方法;