【问题标题】:Remove KVO observer issue删除 KVO 观察者问题
【发布时间】:2014-07-25 08:19:20
【问题描述】:

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

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

我应该在什么地方移除 KVO 观察者?

【问题讨论】:

    标签: objective-c key-value-observing


    【解决方案1】:

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

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

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

    您可以在需要时移除观察者(我相信您想在 dealloc 方法中这样做),仍然在视图控制器中,在这种情况下,当您的视图控制器将被释放时,它首先移除观察者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多