------- android教育訓練、java教育訓練、IOS教育訓練期待與您交流! ----------
1、傳統的getter與setter方法
首先,在類的聲明處定義成員變量,并聲明各變量的set與get方法,最後在類的實作部分,實作各成員變量的set與get方法。
2、點文法介紹
與傳統的getter與setter方法不同,點文法的使用更為友善。但是使用點文法并不是直接通路執行個體變量的,而是由xcode工具自動替換為setter與getter方法的調用的。
點文法是xcode的特性,幫使用者進行代碼替換的。
3、點文法的使用
(1) 設定成員變量值
Person類含_age與_name兩個成員變量。
設定成員變量的值使用:
Person *p = [Person new];
p._age = 18;
p._name = @"Danny";
等同于使用setter方法:
Person *p = [Person new];
[p setAge:18];
[p setName:@"Danny"];
(2) 擷取成員變量值
Person類含_age與_name兩個成員變量。
使用點文法擷取成員變量的值:
int a = p.age;
NSString *s = p._name;
等同于使用getter方法:
int a = [p age];
NSString *s = [p name];
4、點文法使用注意
點文法使用本質是調用類的setter與getter對象方法,如果沒有指定方法,不能使用點文法。
同時,注意setter與getter方法使用,防止self點文法死循環調用。
5、@property用法
編譯器指令@property的使用。
使用格式:@property 類型名 方法名
相當于get與set方法的聲明。
代碼示例:
///@property 使用 #pragma mark Person類 @interface Person:NSObject { int _age; NString _name; } @property int age; @property NSString name; @end
6、@property使用注意
(1) 隻能寫在@interface與@end之間。
(2) 是用來自動生成get與set方法的。
(3) 告訴@property使用成員變量的類型
7、@synthesize使用
編譯器指令@synthesize的使用。
與@property成對使用,完成類的set與get方法的聲明與實作。
使用格式:@synthesize 變量名1,變量名2……(成員變量類型一緻)。
相當于get與set方法的實作,并且建立執行個體的成員變量。
代碼示例:
#pragma mark Person類的實作 @implementation Person @synthesize age; @synthesize name; /* 等同于 - (void)setName:(NSString *) name{ name = name; } <pre name="code" class="objc">- (void)setAge:(int) age{ age = age; }
- (NSString *)name{ return name; }
- (int)age{
return age;
}
*/
@end
8、@synthesize指定執行個體變量指派
使用方法格式:@synthesize 方法名1=變量名1,方法名2=變量名2#pragma mark Person類的實作 @implementation Person @synthesize age=_age,name=_name; <pre name="code" class="objc">/* 等同于 - (void)setName:(NSString *) name{ _name = name; } <pre name="code" class="objc">- (void)setAge:(int) age{ _age = age; }
- (NSString *)name{ return _name; }
- (int)age{
return _age;
}
*/
@end
9、增強型的@property
增強型的@property将成員變量的get與set方法的聲明與實作工作都完成了,而且預設的使用帶下劃線的成員變量,若不存在,則自動定義生成相關成員變量。
變量是私有的,不能被繼承使用。