目标C:对象已释放,而键值观察者仍在其中注册

时间:2011-05-12 18:27:36

标签: objective-c ios core-data key-value-observing

在向核心数据模型中添加2个附加字段后,我遇到了以下错误。

CarPark_CarPark_ was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. 
Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. 
Here's the current observation info:
<NSKeyValueObservationInfo 0x1b6510> (
<NSKeyValueObservance 0x19b210: Observer: 0x1a8cf0, Key path: coordinate, 
Options: <New: NO, Old:     NO, Prior: YES> Context: 0x0, Property: 0x1b7e00>
)

我对下一步做什么有点迷茫。任何有关这方面的指导将非常感谢!请让我知道还需要哪些其他信息。

2 个答案:

答案 0 :(得分:28)

设置断点打开Xcode 4(Xcode 3中的Breakpoints窗口)中的断点选项卡,并为符号“NSKVODeallocateBreak”添加新的符号断点

使用调试器控制台在观察信息

中给出的地址处打印观察者

观察员:0x19af20

po 0x19af20

这应该提供有关观察者的一些有价值的信息。 在您的自定义CarPark类中覆盖addObserver:forKeyPath:options:context:并设置断点以查看正在建立的观察的确切位置。

答案 1 :(得分:9)

这可能是由于观察者在观察物体之前被解除分配。您需要实现 - (void)dealloc 方法来删除观察者中的所有观察对象。