删除KVO观察者问题

时间:2014-07-25 08:19:20

标签: objective-c key-value-observing

我有一个菜单控制器,通过弱引用与视图控制器连接。视图控制器对菜单控制器有错误的引用。

菜单控制器在视图控制器中观察集合视图的某些属性。 当菜单控制器被释放时,我调用[self.viewController.collectionView removeObserver:self forKeyPath:keyPath];但是在这个地方,self.viewController已经是零了。

我应该在什么地方删除KVO观察员?

1 个答案:

答案 0 :(得分:2)

我相信你是以其他方式做到的。 您应该在视图控制器中添加观察者,而不是在菜单控制器中添加:

[object addObserver:menuController forKeyPath:@"openingBalance" ...];

只需将菜单控制器作为参数传递给addObserver:方法,并在菜单控制器中实现observeValueForKeyPath:方法。

您可以在需要时删除观察者(我相信您想在dealloc方法中执行此操作),仍然在视图控制器中,在该情况下,当您的视图控制器将被取消分配时,它首先移除观察者。