Cocoa/Objective-C でシンプルな MVC アプリを開発しています。通知と KVO に関して奇妙な問題 (または誤解) があります。
MainMenu.xib に AppController オブジェクトがあるため、そのプロパティを変更するawakeFromNib
ために登録するメソッドを実装します。次の方法でオブザーバーとして追加します。NSImageView
image
self
// options:3 equals to new/old passed values in changeDictionary
[backgroundImageView addObserver:self
forKeyPath:@"image"
options:3
context:NULL];
はbackgroundImageView
に接続されていIBOutlet
ます。AppController
NSImageView
標準的なobserveValueForKeyPath:ofObject:change:context
方法では、受信した通知をログに記録するだけです。
image
問題は - の値を変更するNSImageView
と、1 つではなく 3 つの通知が表示されることです。これで私を助けてもらえますか?オプションや一般的なオブザーバーの登録で何かを見落としているのではないでしょうか?
UPDATE :のサブクラスであるクラスbackgroundImageView
のインスタンスです。ドラッグ アンド ドロップ操作をドラッグ先として処理するために、後者をサブクラス化しました。が呼び出されると (ドラッグの最後の「状態」)、プロパティの値が~ の間で変更されます。BackgroundImageView
NSImageView
performDragOperation:
image
setImage
willChangeValueForKey
didChangeValueForKey