我有一个使用观察者的类。 代码添加在awakeFromNib
上[self.contactSearchView addObserver:self forKeyPath:@"selectedContactUUID" options:0 context:nil];
self.contactSearchView.contactSelected = self.attendeeSelected;
关于dealloc 执行以下代码:
[self.contactSearchView removeObserver:self forKeyPath:@"selectedContactUUID"];
[[NSNotificationCenter defaultCenter] removeObserver:self];
但是,如果我多次关闭打开该特定视图,最终会生成以下异常并且应用程序崩溃。
类MyClass的实例0xa9923e0已取消分配,而键值观察者仍在其中注册。观察信息被泄露,甚至可能被错误地附加到其他物体上。在NSKVODeallocateBreak上设置断点以在调试器中停止。这是目前的观察信息:
在应用程序崩溃之后不久,我不确定如何继续前进。
答案 0 :(得分:1)
如果self将自己作为观察者添加到另一个对象,那么它必须将自己作为观察者移除。最近,你可以用自己的dealloc方法做到这一点。
答案 1 :(得分:0)
删除观察者: [timer removeObserver:self forKeyPath:@" timeText"];