有没有办法知道是否有对象侦听视图控制器的键路径。例如,我在我的viewcontroller中有
[tabBarController addObserver:self
forKeyPath:@"selectedViewController"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:&PrivateKVOContext
]; (edited)
我想知道我的tabbarcontroller是否可以知道我的viewcontroller是否正在侦听该keypath
原因是因为我的应用程序崩溃,因为标签栏控制器仍然认为我的视图控制器正在侦听该键路径,即使我的视图控制器已被释放
在我的viewcontroller的dealloc方法中,我将[tabBarController removeObserver:self forKeyPath:@"selectedViewController”];
作为观察者移除
答案 0 :(得分:0)
可悲的是没有。无法检查哪些对象当前正在观察其他对象。
因此,通常建议您将补充方法中的removeObserver:
放置到放置addObserver:
的方法中,以便可靠地调用相同的次数。
在这种情况下,由于你将它放在dealloc中,这是在视图控制器生命周期结束时调用的,所以你应该将addObserver:
放在init
方法中,这将在一开始。
答案 1 :(得分:-1)
这取决于观察者是否真正使用,在你的代码中,试试这个:
- (void)dealloc {
@try {
[[NSNotificationCenter defaultCenter] removeObserver:Notification_Location_Ready];
} @catch (NSException *exception) {
} @finally {
}
}