OC學習筆記四(0802 OC8-@property和@synthesize)

1. 當編譯器遇到 @property時,會自動展開成getter和setter的聲明;

    @property 只用來聲明

    @synthesize 只用來實現


    @synthesize 寫了後,可以不需要寫成員變量,會默認幫寫上。


   @synthesize 默認會去訪問跟age同名的變量,如果找不到同名的變量,會自動生成一個私有的同名變量age。


   @synthesize生成的成員變量是私有的!


   @synthesize會自動生成getter和setter的實現


    成員變量一般帶下劃線


    //age = _age 代表getter和setter會去訪問_age這個成員變量;即不會再使用age賦值,而是會用_age; age成員變量已經不存在了,不會再生成了。

  @synthesize age = _age;

  個人覺得這樣的作用是,讓方法名與成員變量名不一致,成員變量前面帶下劃線。(@property 聲明的setter getter方法名不帶下劃線)

  如果想讓成員變量爲公有,那麼就需要在.h文件裏定義成員變量(帶下劃線的)。

/*************************************/

   Xcode 4.5 之後: @synthesize 都省了,只要檢測到有@property,編譯器就會自動生成@synthersize,意思就是自動生成getter setter方法。

  並且,默認生成的成員變量都是下劃線開頭的,且下劃線開始的成員變量是私有的!

         如果找不到_age這個成員變量,會自動生成一個叫做_age的私有成員變量。如果也想給子類訪問,那麼就需要在.h裏把這些變量聲明一下。



補充:




@property  @synthesize 是編譯器的一個特性,編譯器會幫我們把語法展開


我們自己手動實現setter方法後,編譯器就不會再生成setter方法了。






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