我试图在我的一个类中使用键值观察.我在init方法中注册观察者并在dealloc中删除/注销它们,但是我得到了以下错误,这似乎是在调用dealloc方法之前发生的,根据我的调试打印.
正在释放类TekkPoint的实例0x583870,而键值观察者仍在其中注册.观察信息被泄露,甚至可能被错误地附加到其他物体上.在NSKVODeallocateBreak上设置断点以在调试器中停止.这是当前的观察信息:(上下文:0x0,属性:0x536400>上下文:0x0,属性:0x55aba0>)
有什么特别的方法可以删除观察者吗?或者也许是我应该删除它们的特定地方?
根据这个问题,我正在做正确的事情,但为什么我会收到此错误消息?
这是我的dealloc例程:
- (void)dealloc {
// Remove all observers.
for (NSString *path in [TekkPoint observedPaths]) {
[self removeObserver:[option_ tChart]
forKeyPath:path];
}
[description_ release];
[weight_ release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,我的实现可能很奇怪,我正在向观察者添加和删除观察者,这是否会导致我的问题?
objective-c key-value-observing cocoa-bindings observer-pattern