私は最近、KVO で何ができるかを発見し始めました。コードの一部をリファクタリングし、同時に多くの行を節約しています。特定のパターンが推奨されるかどうか疑問に思うほど一般的な問題に直面しています。
場合によっては、既に初期化されたモデルからのデータを表す必要がある新しいビュー コントローラーを読み込みます。-viewDidLoad
私はKVOに登録します:
[_model addObserver:self
forKeyPath:kSomeKey
options:NSKeyValueObservingOptionNew
context:(__bridge void *)(_model)];
値が変更されたときにインターフェイスを変更します。
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if ([keyPath isEqual:kSomeKey] && context == (__bridge void *)(_model)) {
[self updateSomeInterfaceElement];
}
残念ながら、当然のことながら、新しいビューを読み込んだときに、モデルからの現在の値でビューが更新されません。
-updateSomeInterfaceElement
電話するのが最善の方法-viewDidLoad
ですか? このような大したことではないようですが、10 ~ 20 個のプロパティをリッスンする場合、非常に効率が悪いように見えます (特に、すべての-updateSomeInterfaceElement
メソッドはほとんど 1 行のみであるため、別のメソッドにする必要はありません)。これを回避する方法はありますか、またはよりエレガントなソリューションはありますか?