假如目前有一個 class 如下:
定義:dot(.) 與 arrow(->) 的操作:
@interface classA :NSObject{
@private
int val;
@public
int pubVal;
}
-(void) initVal: (int) newVal;
-(void) printVal;
@end
實作:
@implementation classA
@synthesize val, pubVal;
-(void) initVal:(int)newVal
{
val =newVal;
}
-(void) printVal
{
NSLog(@"val=%d", val);
}
@end
classA* bbb =[classA new];執行的結果為:
//dot notation
//設定值
bbb.pubVal =5; //dot 透過 property 機制存取, 同等於 [bbb setPubVal:5];
bbb.val =6; //dot 透過 property 機制存取, 同等於 [bbb setVal:6];
(*bbb).pubVal =7; //dot 可直接存取 @public member
//(*bbb).val =8; //Error, 不是 @public member
//取值
int tmpVal;
tmpVal =bbb.pubVal; //tmpVal =7,同等於tmpVal =[bbb pubVal];
tmpVal =bbb.val; //tmpVal =6,同等於tmpVal =[bbb val];
tmpVal =(*bbb).pubVal; //tmpVal =7
//tmpVal =(*bbb).val; //Error, 不是 @public member
//arrow notation
//設定值
bbb->pubVal =5; //arrow 可直接存取 @public member
//bbb->val =5; //Error, 不是 @public member
//取值
tmpVal =bbb->pubVal; //tmpVal =7
//tmpVal =bbb->val; //Error, 不是 @public member
//使用函數操作
//設定值
[bbb setPubVal:5]; //setPubVal 函數由 property 機制自動產生
[bbb setVal:6]; //setVal 函數由 property 機制自動產生
//取值
tmpVal =[bbb pubVal];
tmpVal =[bbb val];
[bbb initVal:10];
[bbb printVal];
[bbb release];
val=10
0 意見 :
張貼留言