我的申请表存在问题。
答案 0 :(得分:1)
您需要将地图视图的delegate
属性设置为nil
中的-viewDidUnload:
。发生此崩溃是因为地图视图试图向其视图控制器发送消息,但是一旦弹出堆栈,它就已经被释放了。
Apple甚至在传递MKMapViewDelegate
Protocol Reference时提到了这一点。
在发布已为其设置的
MKMapView
对象之前 委托,请记住将该对象的delegate
属性设置为nil
。一 您可以执行此操作的地方位于您处理的-dealloc
方法中 地图视图。
他们建议在delegate
中填写-dealloc
,但由于ARC,-viewDidUnload
是向前发展的最佳选择。
- (void)viewDidUnload
{
self.mapView.delegate = nil;
self.locationManager.delegate = nil;
[super viewDidUnload];
}
答案 1 :(得分:0)
使用接收委托调用的对象时,这是一个常见问题。问题是在取消分配视图控制器之后,它仍会接收来自其中一个对象的调用,如错误消息所示。您需要覆盖视图控制器的viewDidUnload
方法(更不用说dealloc
用于某些内存管理),在其中您需要输入类似的内容:
yourMapView.delegate = nil;
yourLocationManager.delegate = nil;
通过将这些对象的委托设置为nil,当此视图控制器卸载时,它们将停止向其分配的委托发送更新,因此您的应用程序将停止崩溃。