アップルと私が見た多くの例によると、KVO/KVCを使用して自分自身を観察することは問題ありません。 forKeypath:オプション:コンテキスト:オブジェクトのinitメソッド、ラで:また、同じ情報源によると、それはaddObserverを使用してこれを設定する問題ではないaddObserverを使用した奇妙な問題:forKeypath:options:context:initメソッド
- (id)init
{
self = [super init];
if (self) {
[self addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:NULL];
}
return self;
}
残念ながらいくつかの理由で、私のオブザーバメソッドはしていません私がそこでそれをするときに呼び出される。私は別の方法にaddObserver呼び出しを移動し、呼び出し元のメソッドでそのメソッドを呼び出す場合:
MyObject *newObj = [[MyObject alloc] init];
[newObj setupObservers];
その後、すべての罰金です。これはNSImageViewのサブクラスなので、ここには「awakeFromNib」型の選択肢はありません...私はここで私の頭を傷つけています。私は何か明白なものを欠いていると確信しています。 initメソッドではKVOを自分自身で動作させないようにしていますが、私はここに何かヒントを与えてくれるドキュメントには何も見つかりませんでした。
私には分かりません。
これはあなたの質問に対する回答ではありませんが、NULLではなく、常にコンテキストの値として一意のポインタを渡す必要があります。 NSImageView、またはクラスのいくつかのサブクラスが自分の選択したプロパティを観察し始めると、両方ともNULLをこの方法で使用するとすべてがうまくいかなくなります。 –