第11章 屬性
11.1 使用屬性值
用於生成訪問方法,減少代碼量。
11.1.1 簡化接口代碼
@property聲明一個新對象的屬性,即自動聲明屬性的setter和getter方法。
@property float num;
可以調用-setNum:和-num方法。
11.1.2 簡化實現代碼
@synthesize是一種新的編譯器功能,表示“創建了該屬性的訪問代碼”。當遇到@synthesize num;時,編譯器將添加-setNum:和-num方法的預編譯代碼。(在Xcode4.5以後的版本中,可以不使用@synthesize了)
變量聲明位置:頭文件中,相當於protected。實現文件中,相當於private
11.1.3 點表達式的妙用
點表達式(.)可以使我們更加容易地訪問對象的屬性
點表達式(.)出現在等號的左邊,調用setter方法
11.2 屬性擴展
@property擴展
1、nonatomic 如果不在多線程中使用,可以調高訪問方法的調用速度,經常在iOS中使用
2、不想保留某個變量對象,使用assign
3、copy複製屬性
4、weak不會使超類的保留計數器值加1,strong會
11.2.1 名稱的使用
屬性的名稱始終與支持屬性的實例變量名稱相同的情況時非常普遍的。但也可以不同,需在@synthesize綁定
@synthesize name=nameInClass;
11.2.2 只讀屬性
readonly
11.2.3 不生成代碼
@dynamic 類名
11.2.4 自定義方法名
@property (getter=isHidden) BOOL hidden;