2010-11-28 15 views
0

私はプロパティを持つインターフェイスを持っています。Objective-c setter/getterコールバック

コールバックを宣言してインスタンスのセッターまたはゲッターに到達する方法を知りたいと思います。 これを行う方法はありますか?

私の英語とあなたの答えと時間は申し訳ありません。

+2

申し訳ありませんが、わかりません。なぜあなたはコールバックが必要ですか?何を何に呼び返しているのですか? – AriX

答えて

0

インスタンス変数の@propertyを宣言し、実装ファイルで合成した場合、ゲッターとセッターが自動的に作成されます。あなたの実装に続いてNSMutableArrayの

@interface ... 
{ 
    NSMutableArray *array; 
} 

@property (nonatomic, retain) NSMutableArray *array; 

の例:

@implementation ... 
@synthesize array; 

することが行われていますたら、使用して変数の値を取得し、あなたのインスタンスを設定することができます。

ゲッター:self.array OR [self array]

セッター:self.array = ...または

+0

最後の行は間違っています: '[self setArray:...]' –

+0

あなたはそうです!今修正されました。 – Rog

0

私は私が正しくあなたの質問を理解してかどうかわからないですが、あなたはいくつかのコードを取得しようとしている場合はセッターやゲッターが呼び出されるたびに実行されたことを行うには、2つの方法基本的にあります。

1)あなたは上書きすることができますが、この

ヘッダーのように合成されたゲッターおよび/またはセッター:

@interface ... 
{ 
    NSString *example; 
} 
@property (nonatomic, copy) NSString *example; 

実装:

@implementation ... 
@synthesize aString 

-(void)setExample:(NSString *)newExample 
{ 
    if (example != newExample) 
    { 
     [example autorelease]; 
     example = [newExample copy]; 

     // YOUR CODE HERE 
    } 
} 

...ゲッターの場合も同様です。

2)変数がKVOを介して観測され、変数が変更されるたびに 'コールバック'を得ることができます。これはもちろん、getterではなくsetterが呼び出されたときにのみコードを実行します。

関連する問題