このサンプルプログラムのプロパティ(valCal1)に対して、インスタンス変数(_valCal1)が自動で生成されています。また、プロパティ(valCal2)に対しても同様にインスタンス変数が自動で生成されています。このサンプルプログラムでは足し算、引き算の各メソッドに対して、インスタンス変数を利用して計算した結果とプロパティを利用して計算した結果の値を確認しています。
結論としてインスタンス変数もプロパティも同様の値が設定されており、結果としてはどちらの値を利用してもよいということになります。
Ojbect-CではメソッドにPrivate,Publicの概念がないらしいのですが、ヘッダーファイルの@interfaceにメソッド定義すると外部参照できる仕組みなので、実装ファイルの@interface部分にのみメソッド定義すればPrivateメソッドと同じように扱えます。
以降はサンプルプログラムです。
◆calcクラスのヘッダーファイル
メソッドやプロパティを定義します。
@interface calc : NSObject
//メソッド定義
- (id)calc_Init;
- (int)calc_Tasu;
- (int)calc_TasuP;
- (int)calc_Hiki;
- (int)calc_HikiP;
//プロパティ
@property(nonatomic) int valCal1;
@property(nonatomic) int valCal2;
@end
◆calcクラスの実装ファイル
#import "calc.h"
@interface calc()
//-(int) calc_hiki2; Privateにする場合はヘッダーファイルに定義しない
@end
@implementation calc
-(id) calc_Init
{
return self;
}
// 足し算(インスタンス変数)
-(int)calc_Tasu
{
// 戻り値返却
return _valCal1 + _valCal2;
}
// 足し算(プロパティ)
-(int)calc_TasuP
{
// 戻り値返却
return self.valCal1 + self.valCal2;
}
// 引き算(インスタンス変数)
-(int)calc_Hiki
{
// 戻り値返却
return _valCal1 - _valCal2;
}
// 引き算(プロパティ)
-(int)calc_HikiP
{
// 戻り値返却
return self.valCal1 - self.valCal2;
}
@end
◆呼び出し側の処理
・・・
{
//インスタンス生成
calc *myCalc = [[calc alloc]calc_Init];
//足し算 (インスタンス変数
myCalc.valCal1 = 1; myCalc.valCal2 = 2;
int retTasu = [myCalc calc_Tasu];
//足し算 (プロパティ)
myCalc.valCal1 = 2; myCalc.valCal2 = 2;
int retTasuP = [myCalc calc_TasuP];
//引き算 (インスタンス変数)
myCalc.valCal1 = 10; myCalc.valCal2 = 5;
int retHiki = [myCalc calc_Hiki];
//引き算 (プロパティ)
myCalc.valCal1 = 10; myCalc.valCal2 = 8;
int retHikiP = [myCalc calc_HikiP];
//結果
NSLog(@"足し算(インスタンス変数):%d" ,retTasu);
NSLog(@"足し算(プロパティ):%d" ,retTasuP);
NSLog(@"引き算(インスタンス変数):%d" ,retHiki);
NSLog(@"引き算(プロパティ):%d" ,retHikiP);
}
足し算(インスタンス変数):3
足し算(プロパティ):4
引き算(インスタンス変数):5
引き算(プロパティ):2
0 件のコメント:
コメントを投稿