关于 MKMapView 内存问题,应用程序异常崩溃
App crashes strangely regarding MKMapView memory issues
我一直在开发一款运行良好的应用程序,直到我添加了 MKMapView。如果我在地图中导航到更广阔的区域,用地图关闭视图控制器并添加一个新的视图控制器,应用程序将崩溃并显示 Xcode 说 "Lost connection to 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,而且它似乎在探索更多的同时清理自己。但是,在我关闭该视图控制器并且添加另一个只有一个 UIIMageView 的简单 VC 后,将剩下大约 200mb,它会因 "Lost Connection" 事件而崩溃。
我是内存管理的新手,但我这里有仪器配置文件的屏幕截图:
就像这里的图片一样。 A 代是我向视图控制器展示 MKMapView 的地方,B 代是我取消该视图的地方。内存使用率明显下降,这很好。但是只要我点击呈现不同的视图控制器,它就会断开连接,就像 Xcode.
我对此做了很多研究,现在我真的不知道该怎么做。谢谢你们能帮我解决这个问题!!!
切换到 Google 地图后问题已解决...
我一直在开发一款运行良好的应用程序,直到我添加了 MKMapView。如果我在地图中导航到更广阔的区域,用地图关闭视图控制器并添加一个新的视图控制器,应用程序将崩溃并显示 Xcode 说 "Lost connection to 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,而且它似乎在探索更多的同时清理自己。但是,在我关闭该视图控制器并且添加另一个只有一个 UIIMageView 的简单 VC 后,将剩下大约 200mb,它会因 "Lost Connection" 事件而崩溃。
我是内存管理的新手,但我这里有仪器配置文件的屏幕截图:
就像这里的图片一样。 A 代是我向视图控制器展示 MKMapView 的地方,B 代是我取消该视图的地方。内存使用率明显下降,这很好。但是只要我点击呈现不同的视图控制器,它就会断开连接,就像 Xcode.
我对此做了很多研究,现在我真的不知道该怎么做。谢谢你们能帮我解决这个问题!!!
切换到 Google 地图后问题已解决...