当关键价值观察员仍然在其注册时被解除分配

时间:2015-07-21 17:39:05

标签: ios objective-c

我有这个KVO编码的问题。在下面的代码中,我首先扫描关键currentLocation的更改,该工作正常,但是却调用了getData两次,因为,我认为,scala> trait A defined trait A scala> trait B extends A defined trait B scala> val a = new A { } a: A = $anon$1@2d6d8735 scala> val b = new B { } b: B = $anon$1@47f37ef1 scala> a.isInstanceOf[AnyRef] res4: Boolean = true scala> b.isInstanceOf[AnyRef] res7: Boolean = true 同时具有CLLocationaltitude,因此变化两次。好吧,我以为我可以整齐地扫描其中任何一个:

longitude

但现在我开始收到以下错误信息,我之前没有看到过:

  

由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:' CLLocation类的实例0x1742050d0已取消分配,而键值观察者仍在其中注册。

1 个答案:

答案 0 :(得分:2)

当一个观察者被解除分配时,NSNotificationManager没有弄明白,当它想要发送一条消息时,它会将它发送给解除分配的观察者 - 然后出现问题。

您通常会在dealloc中添加代码,从通知管理器中取消注册您的对象。