【发布时间】:2017-04-01 18:20:20
【问题描述】:
有没有办法知道是否有对象在监听视图控制器的键路径。例如,我的视图控制器中有
[tabBarController addObserver:self
forKeyPath:@"selectedViewController"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:&PrivateKVOContext
]; (edited)
我想知道我的 tabbarcontroller 是否可以知道我的 viewcontroller 是否正在侦听该键路径
原因是我的应用程序崩溃了,因为标签栏控制器仍然认为我的视图控制器正在侦听该键路径,即使我的视图控制器已被释放
在我的视图控制器的dealloc方法中,我把[tabBarController removeObserver:self forKeyPath:@"selectedViewController”];作为观察者移除了自己
【问题讨论】:
-
如果观察者没有被删除,请尝试在
viewWillDisappear中写入[[NSNotificationCenter defaultCenter] removeObserver:observerObjectHere] -
有点切线但是为什么标签栏控制器中的视图控制器应该在选择不同的标签时关心?这听起来像是一个糟糕的设计。
-
你为什么不继承 tabBarController 并创建协议,使用它你将能够发送 selectedViewController 已更改的委托消息。这将是更清晰的解决方案。
标签: ios objective-c key-value-observing