0

Cocoa/Objective-C でシンプルな MVC アプリを開発しています。通知と KVO に関して奇妙な問題 (または誤解) があります。

MainMenu.xib に AppController オブジェクトがあるため、そのプロパティを変更するawakeFromNibために登録するメソッドを実装します。次の方法でオブザーバーとして追加します。NSImageViewimageself

// options:3 equals to new/old passed values in changeDictionary
[backgroundImageView addObserver:self 
                      forKeyPath:@"image" 
                         options:3
                         context:NULL];

backgroundImageViewに接続されていIBOutletます。AppControllerNSImageView

標準的なobserveValueForKeyPath:ofObject:change:context方法では、受信した通知をログに記録するだけです。

image問題は - の値を変更するNSImageViewと、1 つではなく 3 つの通知が表示されることです。これで私を助けてもらえますか?オプションや一般的なオブザーバーの登録で何かを見落としているのではないでしょうか?

UPDATE :のサブクラスであるクラスbackgroundImageViewのインスタンスです。ドラッグ アンド ドロップ操作をドラッグ先として処理するために、後者をサブクラス化しました。が呼び出されると (ドラッグの最後の「状態」)、プロパティの値が~ の間で変更されます。BackgroundImageViewNSImageViewperformDragOperation:imagesetImagewillChangeValueForKeydidChangeValueForKey

4

3 に答える 3