我有一个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是否发生了变化,但观察到的V.ValueForKeyPath永远不会被调用...
我错过了什么吗?
感谢您的帮助!
安东尼奥
答案 0 :(得分:20)
解决了它: 我直接在logoAnimation中设置patrocinioDidLoad,而不使用标准的getter和setter。在logoAnimation中,
patrocinioDidLoad = YES;
没有用,而
self.patrocinioDidLoad = YES;
做到了!