17
我有一个视图控制器创建一个UIView的实例,然后我在实例中注册的观察者,这样observeValueForKeyPath不会被调用
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 = [[MainLogoAnimation alloc] init];没有工作,但self.logoAnimation = [[MainLogoAnimation alloc] init] autorelease];作品。 – ssj 2011-04-21 03:58:19
所以如果你想使用@synthesize制作的setters和getters,你总是必须把“self”放在前面? – gonzobrains 2011-07-12 02:28:34
哇!经过几个小时的测试,我的代码发现为什么没有调用obserValueForKeyPath,我终于发现这是为什么。为什么苹果公司在文档中大胆表明,必须通过二传手(并因此使用该财产而不是伊娃)来使其运行? – ArtOfWarfare 2012-04-27 03:09:28