如果AddAnnotations未完成,应用程序崩溃

时间:2011-11-26 08:03:56

标签: ios mapkit mkannotation

我有一个Application,它是一个SplitViewController,左边是主视图,右边是详细视图。其中一个视图(Branch Finder)是一个Map视图,它将一系列Annotations加载到Map。

如果我在切换到任何其他视图之前加载注释(加载注释需要花费1秒钟),那么一切都很好。但是,如果用户快速关闭分支查找器视图,而正在加载注释,则应用程序将崩溃并发出以下通知:

  

[BranchFinder_iPad respondsToSelector:]:发送到解除分配的实例0x807d230的消息

现在,我的想法是,解除分配的实例将引用包含所有正在发布的注释的Array(在视图的标题中声明),并在用户离开BranchFinder_iPad视图时设置为nil。这是传递给addAnnotations方法的数组。

[self.mapView addAnnotations:branchSites];

是否有其他人在添加分配中途遇到一个问题,如果用户移动到另一个视图,则会发生崩溃。

只是为了澄清:

  • 如果我等待注释加载,切换到任何其他视图都没有问题。
  • 我确实有一个自定义注释视图,但我从我的代码中删除了它(从混合中消除它)。这样做并没有改变任何事情。
  • 我已经在其他地方寻求过有关此问题的帮助,但很多关于地图视图的视图教程都只是单一视图,所以这个问题还没有出现。
  • 我发现了以下类似的问题:mapkit addAnnotations crashes
  • 最后,我刚刚跳转到x-code 4.我认为我的一些问题仅仅是因为我正在重新学习一些我应该知道的事情。

此致 Nathan A

PS:我想在此附上一张图片,但我遇到了麻烦。我本身没有声誉点,我的工作场所不允许我访问任何图像托管门户。我会尽力在今天晚些时候添加一张图片。

1 个答案:

答案 0 :(得分:3)

嘿,任何读过这篇文章的人。

我基本上在这里执行了一个新手错误 - 对于我的应用程序中的MKMapView,我必须将委托设置为nil作为我视图中的释放例程的一部分。苹果文档在下面的文档中提到了这一点:

http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html

相关部分:

  

在发布已设置委托的MKMapView对象之前,请记住将该对象的委托属性设置为nil。您可以在dealloc方法中处理地图视图。

如果我切换到另一个视图并且在执行代码时仍然引用了MKMapView,例如addAnnotations例程,则不会导致此问题。