2010-12-04 4 views
0

オブジェクトのメンバ変数にアクセスすることは可能ですか?

IがmにアクセスするにはNSObjectの

@interface AObject : NSObject { 
    NSinteger m; 
    NSInteger n; 
} 


-(void) setM:(NSInteger)v ; 
-(NSInteger) getM ; 
-(void) setN:(NSInteger)v ; 
-(NSInteger) getN ; 

からサブクラスAOBjectを作成し、nは、私が使用することができる[myAObject GETM]または[myAObject getN] Mにアクセスすることが可能であり、nはタグまたは任意の他の使用私はキュー内のオブジェクトのすべてのメンバ変数にアクセスできますか?

すべてのコメントを歓迎します。

ありがとう

interdev

答えて

2

を。あなたが作ったセッターとゲッターを通らなければなりません。

これらのメンバー変数にアクセスする場合は、NSIntegerの代わりにNSNumberを使用し、これらの値を保持する配列を明示的に作成できます。これを行うには、localVariables配列を宣言し、そのように、あなたのコンストラクタでそれを初期化:

-(id) init { 
    if (self = [super init]) { 

     // initialize and set values for m and n 
     NSArray *array = [[NSArray alloc] initWithObjects:self.m, self.n, nil]; 
     self.localVariables = array; 
     [array release]; 
    } 
    return self; 
} 

は、その後、あなたはすべてのローカル変数にアクセスするには、この処理を繰り返すことができます。ところで

、あなたの実装ファイルにあなたのヘッダファイルに

@property NSInteger m; 
@property NSInteger n; 

を追加することにより、セッターとゲッターの世話をし、

@synthesize m,n; 

ことができます。

+0

ありがとうございました。あなたはそれがNSNumberのためにいいのですか? – arachide

+0

@ user262325:いいえ、NSIntegerはint型のtypedefですが、NSNumberはObjective-Cクラスなので、オブジェクトとして管理する必要があります。型を 'NSNumber'に変更しただけでは@ Samのコードでは不十分です。 –

+0

私は答えを更新しました。NSNumberの配列を保持する方法を示しています。すべてのローカルを1つの場所に保持したい場合は、mとnをNSNumberオブジェクトに変更する必要があります。 –

関連する問題