18

我有一个 ViewController 创建一个 UIView 的实例,然后我用该实例注册一个观察者,这样

logoAnimation = [[MainLogoAnimation alloc] init];
[logoAnimation addObserver:self forKeyPath:@"patrocinioDidLoad" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];

然后,在同一个文件中,我有:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
 NSLog(@"%@ \n %@ \n %@ \n ",keyPath,object,change);
}

但是,尽管我已经检查并仔细检查了 logoAnimation.patrocinioDidLoad 是否已更改,但 observeValueForKeyPath 永远不会被调用...

我错过了什么吗?

谢谢您的帮助!

安东尼奥

4

1 回答 1

20

解决了:我直接在 logoAnimation 中设置了 patrocinioDidLoad,没有使用标准的 getter 和 setter。在 logoAnimation 中,

patrocinioDidLoad = YES;

没用,而

self.patrocinioDidLoad = YES;

做过!

于 2010-04-28T10:54:30.710 回答