Apple と私が見た多くの例によると、KVO/KVC を使用して自分自身を監視することに問題はありません。また、それらの同じ情報源によると、オブジェクトの init メソッドで addObserver:forKeypath:options:context: を使用してこれを設定することは問題ではありません。
- (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」タイプの代替手段がここにあるわけではありません...私は本当に頭を悩ませていますが、明らかな何かが欠けていると確信しています。自分自身のKVOがinitメソッドで機能しないようにしますが、ここでヒントを与えるドキュメントには何も見つかりませんでした。
私は何を知りませんか?