Iphone 未调用observeValueForKeyPath

Iphone 未调用observeValueForKeyPath,iphone,key-value-observing,Iphone,Key Value Observing,我让一个ViewController创建一个UIView实例,然后向该实例注册一个观察者,这样 logoAnimation = [[MainLogoAnimation alloc] init]; [logoAnimation addObserver:self forKeyPath:@"patrocinioDidLoad" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; 然后,在同

我让一个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

我错过什么了吗

谢谢你的帮助

安东尼奥解决了这个问题: 我直接在logoAnimation中设置patrocinioDidLoad,没有使用标准的getter和setter。在动画中

patrocinioDidLoad = YES;
没有起作用,然而

self.patrocinioDidLoad = YES;

是的

谢谢你帮我解决了我的问题,比如logoAnimation=[[MainLogoAnimation alloc]init];未工作,但self.logoAnimation=[[MainLogoAnimation alloc]init]autorelease];很有效。所以如果你想使用@synthesis?哇!制作的二传手和三传手,你必须把“自我”放在前面!经过数小时的测试,我终于找到了为什么obserValueForKeyPath从未被调用的原因。为什么苹果不在文档中加粗说明必须通过setter(从而使用属性而不是ivar)才能工作?