標籤:檔案 cti re c ar new
屬性定義
@interface Nothin : NSObject
@property NSString *prop;
@end
訪問屬性
Nothin *nothin = [Nothin new];
//get
[nothin prop];
//set
[nothin setProp: @"Nothin"];
聲明了@property後,編譯器會自動整合屬性的getter和setter
屬性的存取方法命名規則:
getter方法和屬性名稱相同, 例如prop 的getter方法名也為prop
setter方法是“set”首碼加上首字母大寫的屬性名稱, 例如prop 的setter方法名為 setProp
屬性預設是readwrite的,給屬性加readonly attribute:@property (readonly) NSString *prop
設定自訂的存取方法:@property (getter = getProp) NSString *prop;
如果同時設定多個attribute,用逗號分隔:@property (ready, getter = getProp) NSString *prop;
訪問屬性的簡潔文法:
//get
NSString *str = nothin.firstName;
//set
nothin.firstName = @"Nothin";
預設情況下,編譯器自動為屬性封裝了一個執行個體變數,執行個體變數是屬性名稱加底線首碼,例如prop屬性封裝的執行個體變數為 _prop
可以在類的內部直接存取該執行個體變數
- (void)Method
{
_prop = @"Nothin";
}
也可讓屬性封裝自訂的執行個體變數,在.m 檔案中,用synthesize關鍵字。例如:
@synthesize prop = custom_Prop;
如果用@synthesize 卻沒有給屬性指定執行個體變數名,那麼該屬性封裝的執行個體變數名就和屬性名稱是一樣的,例
@synthesize prop; 這種情況下執行個體變數的名字也為 prop
如過不想用屬性來封裝執行個體變數,也可以在.h或者.m中直接定義執行個體變數:
@interface Nothin : NSObject
{
NSString *_var;
}