我在 iOS 应用程序中遇到了 KVO 问题。我似乎无法正确处理。我正在尝试做的事情:
我有一个观察(并显示)全局值的 MenuViewController(可在左侧显示,如 facebook 应用程序)。我尝试了一些不同的方法,但我的应用程序总是崩溃(在不同的点和出于不同的原因)。我将在下面描述这些。
注意:我[object addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil]
用于将 MenuViewController 注册为观察者并[object removeObserver:self forKeyPath:@"name" context:nil]
取消注册。
场景 1:
o 我将注册为观察者的-viewWillAppear
方法和 removeObserver 代码放在-viewWillDisappear
. o 当值更改并且我完全更改了 rootViewController 时,我收到错误消息“发送到已释放实例的消息”。所以我猜 MenuViewController 仍然注册为观察者。
场景 2:
o 结果,我将removeObserver
代码放入 dealloc 函数中(后来也将addObserver
部分移到 viewDidLoad 中)作为观察者。
所以也许有人可以给我一个关于我的问题以及如何以正确的方式做 KVO 的提示。不幸的是,到目前为止,文档无法帮助我。
谢谢!