【发布时间】:2010-12-07 15:09:21
【问题描述】:
如果你告诉一个客观的c对象removeObservers:对于一个关键路径并且该关键路径没有被注册,它会破解悲伤。喜欢-
'无法从中删除关键路径“theKeyPath”的观察者,因为它没有注册为观察者。'
有没有办法确定一个对象是否有注册的观察者,所以我可以这样做
if (object has observer){
remove observer
}
else{
go on my merry way
}
【问题讨论】:
-
我在 iOS 8 上更新旧应用程序时遇到了这种情况,其中视图控制器正在被释放并抛出“无法删除”异常。我认为通过在
viewWillAppear:中调用addObserver:并在viewWillDisappear:中相应地调用removeObserver:,呼叫已正确配对。我必须快速修复,所以我将实施 try-catch 解决方案并发表评论以进一步调查原因。 -
我只是在处理类似的事情,我发现我需要更深入地研究我的设计并对其进行调整,这样我就不需要再次移除观察者了。
-
使用这个答案中建议的布尔值对我来说效果最好:stackoverflow.com/a/37641685/4833705
标签: objective-c cocoa key key-value-observing