2017-03-10 3 views
0

は、私は、このためのセッターを作成することだった場合、私はUIButtonの既知のプロパティのセッターをインターセプトし、その値を設定

- (void)setName:(NSString *)name { 
    _name = name; 
    // ... bla bla... 
} 
を使用することになり

@property (nonatomic, strong) NSString *name; 

のように、私はクラスのプロパティを作成していたと仮定します

最初の行に注目してください。私はそのプロパティの内部変数に新しい名前を割り当てます。

ボタンが選択状態にある場合、UIButtonの背景色をプログラムで変更したいとします。

だから、私はこのように、selected財産のsetterを傍受できると思っていた:

- (void)setSelected:(BOOL)selected { 
    self.backgroundColor = selected ? [UIColor redColor] : [UIColor darkGrayColor]; 
} 

しかし、そのプロパティの「内部」の値を設定するための明らかな方法はありません。それは_selected = selectedを受け入れません。私がself.selected = selectedを使用した場合、私はsetterを無期限に呼び出す設定のクラッシュ条件を作成します。

どうすればよいですか?継承されたプロパティを設定するには

答えて

1

は、スーパーを呼び出す:

[super setSelected:selected]; 

または

super.selected = selected; 
+0

B R I L L I A N T! ! ! – SpaceDog

関連する問題