如何调试NSObject观察者?

时间:2011-10-21 03:32:55

标签: objective-c xcode gdb

假设我有一个Player实例,我想在他们的分数中添加一个观察者,这样我就可以在我的iOS应用程序中更新分数显示。我相信我应该调用一个看起来像这样的方法来添加观察者:

[[self.game player] addObserver:self
                     forKeyPath:@"score" 
                        options:NSKeyValueObservingOptionNew
                        context:nil];

在同一个类中,我定义了一个应该接收此消息的方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

但是,我在此方法中放置的断点永远不会被击中。

我想知道如何诊断这个问题。我已经验证了播放器实例已填充,并且当更新分数时,会更新相同的实例。

如果有帮助,我刚刚将我的项目转换为ARC,但上面的代码是新的,从未有过。

1 个答案:

答案 0 :(得分:1)

你的关键路径“得分”不符合KVO(你没有为*得分定义@property吗?)或者永远不会调用添加观察者方法。您可以通过在第一个代码段中的代码行上放置断点并验证观察者确实正在注册来轻松诊断后者。