0

私は最近、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 行のみであるため、別のメソッドにする必要はありません)。これを回避する方法はありますか、またはよりエレガントなソリューションはありますか?

4

1 に答える 1