我一直遇到这个错误:
"An instance 0x156ad8d0 of class Actor was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:"
是否有一种有效的方法来注销接收方正在观察的所有对象,以及注销所有正在观察它的对象?我可以找到取消注册的唯一方法是通过 removeObserverForKeyPath - 这将需要我跟踪所有已注册的对象和键路径,这可能会变得很麻烦。
最佳答案
按照@Kevin 的建议使用removeObserverForKeyPath:
。
但是,您真的应该在解除分配之前移除观察者。在释放期间,实例的状态很可能会不一致。特别是在处理类层次结构时。因此,在释放期间让观察者处于事件状态通常是一些非常不稳定、难以修复的错误的来源。
关于ios - 删除 dealloc 上对象的所有观察信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200330/