私は現在15個のプロパティを持つ(そして成長している)クラスを持っており、それらのプロパティの1つが変更されるたびにupdateメソッドを呼び出さなければならないことに気づいています。
現在、私はすべてのセッターを次のようなコードでオーバーライドしています。
-(void)setParameterName:(NSUInteger)newValue {
if (_param == newValue)
return;
_param = newValue;
[self redraw];
}
ここで重要なのはメソッド[self redraw];
です。
それを行うためのより良い方法はありますか?keyValueオブザーバー(メソッドobserveValue:forKeyPath:ofObject:change:context:
)を使用する必要がありますか?
ノート:
- すべてのプロパティ(これまでのところ)は(
assign
ほとんど、、、enum
およびNSUInteger
)です。CGFloat
BOOL
- これらのプロパティはすべて、バインディングを使用して設定されます(メソッド
bind:toObject:withKeyPath:options:
)。ファイルシステムからロードする場合を除きます(ロードが完了した後、すべてのオブジェクトで描画メソッドをすでに呼び出しているため、これは重要ではありません)。 - 値の変更は、現在のオブジェクトに対してのみ行われます。他のオブジェクトに変更が発生したときに通知する必要はありません。
- 他にも、変更を監視する必要のないプロパティがあります(出力に影響がなく、出力の描画に時間がかかるため)。
ありがとう!