如果你告诉一个客观的 c 对象 removeObservers: 对于一个关键路径并且那个关键路径没有被注册,它会破解悲伤。像 -

'无法从中删除关键路径“theKeyPath”的观察者,因为它没有注册为观察者。

有没有办法确定一个对象是否有一个注册的观察者,所以我可以这样做

if (object has observer){
  remove observer
}
else{
  go on my merry way
}

最佳答案

在您的 removeObserver 调用中 try catch

@try{
   [someObject removeObserver:someObserver forKeyPath:somePath];
}@catch(id anException){
   //do nothing, obviously it wasn't attached because an exception was thrown
}

关于objective-c - 如何判断对象是否附加了键值观察器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1582383/

10-13 09:13