我一直在开发一款能够完美运行的应用,直到我添加了MKMapView。如果我在地图中导航更广泛的区域,使用地图关闭视图控制器并添加新的视图控制器,应用程序将崩溃Xcode说"丢失与iPhone的连接"。
我在线搜索过,发现它应该是一个内存问题。所以我用了很多方法来清理MKMapView的内存,包括只在AppDelegate中存储一个MKMapView实例并在ViewDidDisappear之后清理它:
if let annotations = self.mapView?.annotations {
self.mapView?.removeAnnotations(annotations)
}
if self.mapView?.mapType == MKMapType.standard {
self.mapView?.mapType = MKMapType.hybrid
} else if self.mapView?.mapType == MKMapType.hybrid {
self.mapView?.mapType = MKMapType.standard
}
self.mapView?.delegate = nil
self.mapView?.removeFromSuperview()
self.mapView = nil
更奇怪的是,当我跟踪内存使用情况时,在地图中,内存使用量可以达到300 + mb,并且在探索更多内容时似乎会自行清理。但是,在我解除视图控制器之后会有大约200mb左右,而当我只用一个UIIMageView添加另一个简单的VC时,它会在" Lost Connection"事情。
我是内存管理的新手,但我在这里有一个关于仪器配置文件的截图:
就像在图像中一样。 A代是我用MKMapView呈现视图控制器的点,而代B是解除该视图的点。内存使用率明显下降,这很好。但是,只要我点击呈现不同的视图控制器,就会像在Xcode中一样断开连接。
我已经对此做了大量研究,我现在还不知道该怎么做。谢谢,如果你们能帮帮我!!!!
答案 0 :(得分:2)
我切换到Google地图后修复了问题...