根据 Apple 和我看到的大量示例,使用 KVO/KVC 来观察自己是没有问题的。同样根据这些相同的来源,通过在对象的 init 方法中使用 addObserver:forKeypath:options:context: 来设置它不是问题,a la:
- (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 on self 在 init 方法中不起作用,但我在文档中没有找到任何可以在这里给我任何提示的内容。
我不知道什么?