我有这个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
同时具有CLLocation
和altitude
,因此变化两次。好吧,我以为我可以整齐地扫描其中任何一个:
longitude
但现在我开始收到以下错误信息,我之前没有看到过:
由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:' CLLocation类的实例0x1742050d0已取消分配,而键值观察者仍在其中注册。
答案 0 :(得分:2)
当一个观察者被解除分配时,NSNotificationManager没有弄明白,当它想要发送一条消息时,它会将它发送给解除分配的观察者 - 然后出现问题。
您通常会在dealloc中添加代码,从通知管理器中取消注册您的对象。