相关疑难解决方法(0)

我何时应该删除观察员?在删除观察者之前释放对象的错误

我试图在我的一个类中使用键值观察.我在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

32
推荐指数
1
解决办法
2万
查看次数