在我的应用程序中,我获取用户位置并执行反向地理编码器。同时用户可以写一个笔记。 有时,当我调试并运行我的应用程序时,我会获得此消息:
*** -[MyViewController respondsToSelector:]: message sent to deallocated instance 0x61a6920
我没有成功解决这个问题,但我注意到禁用地理定位问题并没有出现(至少到现在为止)。 所以我认为,当开启地理定位时,反向地理编码器(一个单独的线程)可以在控制器已被解除分配时返回。 有可能吗?如果是这样的话,怎么可能避免呢?
谢谢,
弗兰
答案 0 :(得分:3)
完全有可能(事实上,这是一个相当常见的错误),因为异步流程(如反向地理编码)的委托可以从该流程下取消分配。当发生这种情况时,(在这种情况下)地理编码器将很乐意在解除分配的委托对象上调用其委托方法,就像您所看到的一样。
这就是MKReverseGeocoder
有-cancel
方法的原因。您想在您用作地理编码器委托的班级中的-(void)dealloc
上调用它。也许还可以将地理编码器的委托设置为nil
。
这很可能意味着您需要向该类添加命名/合成属性以保持对地理编码器的处理。这样你就可以在你的dealloc方法中说“取消”。