我有一个菜单控制器,通过弱引用与视图控制器连接。视图控制器对菜单控制器有错误的引用。
菜单控制器在视图控制器中观察集合视图的某些属性。
当菜单控制器被释放时,我调用[self.viewController.collectionView removeObserver:self forKeyPath:keyPath];
但是在这个地方,self.viewController已经是零了。
我应该在什么地方删除KVO观察员?
答案 0 :(得分:2)
我相信你是以其他方式做到的。 您应该在视图控制器中添加观察者,而不是在菜单控制器中添加:
[object addObserver:menuController forKeyPath:@"openingBalance" ...];
只需将菜单控制器作为参数传递给addObserver:
方法,并在菜单控制器中实现observeValueForKeyPath:
方法。
您可以在需要时删除观察者(我相信您想在dealloc方法中执行此操作),仍然在视图控制器中,在该情况下,当您的视图控制器将被取消分配时,它首先移除观察者。