iOS property兩種實現方法區別的簡單介紹

在聲明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 方法; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章