11.1 使用屬性值(@property)
11.1.2 簡化實現代碼
@synthesize是一種新的編譯器功能,表示“建立了該屬性的存取碼”。當遇到@synthesize rainHandling;時,編譯器講添加-setrainHandling:和-rainHandling方法的先行編譯代碼(在Xcode4.5以後的版本中,可以不使用@synthesize了) 11.1.3 點運算式的妙用
點運算式(.)可以使我們更加容易地訪問對象的屬性
點運算式(.)出現在等號的左邊,調用setter方法,例如
[tire setRainHandling:20+i];
等價於
tire.rainHandling=20+i;
如果出現在等號的右邊,調用該變數的getter方法 11.2 屬性擴充
@property中,使用
1、nonatomic 如果不在多線程中使用,可以調高存取方法的調用速度,經常在iOS中使用
2、不想保留某個變數對象,使用assign(如勾選)
3、copy複製屬性
4、weak不會使超類的保留計數器值加1,strong會 11.2.1 名稱的使用
屬性的名稱始終與支援屬性的執行個體變數名稱相同的情況時非常普遍的。 11.2.2 唯讀屬性
使某個對象具有唯讀屬性,這個屬性可能是一個即時計算的值,也可能是一個其他對象只能讀取單無法更改的值。
@property (readwrite,copy)NSString *name;//可以讀取也可以修改@property (readonly)NSString *licenseNumber;//唯讀,只聲稱getter而不產生setter
11.2.3 自己動手有時更好
1、使用@dynamic來高速編譯器不要聲稱任何代碼貨建立響應的執行個體變數
2、預設聲稱的方法名稱是blah:和setBlah:格式,如果想要換掉,可以使用getter=和setter=自訂,例如
@property(getter=isBlah) Bool blan;
11.2.4 特性不是萬能
屬性只支援blah:和setBlah:方法,但不支援需要接受額外參數的方法 11.3 小結
1、使用@property自動產生setter和getter方法的聲明
2、使用@synthesize與編譯指令可以通知編譯器產生存取方法(Xcode4.2之後可以不用)
3、@dynamic指令高速編譯器不要產生變數和代碼
4、點運算式:在等號左邊,setter;右邊,getter