App crashes strangely regarding MKMapView memory issues
在添加MKMapView之前,我一直在开发一个运行良好的应用程序。如果我在更大范围内浏览地图,关闭地图的视图控制器并添加新的视图控制器,则该应用程序将崩溃,并显示Xcode,提示"与iPhone的连接断开"。
我在网上搜索过,发现应该是内存问题。因此,我使用了很多方法来清理MKMapView的内存,包括仅将MKMapView的一个实例存储在AppDelegate中,并在ViewDidDisappear之后清理它,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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时,它就会因为"丢失连接"而崩溃。
我是内存管理的新手,但是这里有用于仪器配置文件的屏幕截图:
就像图片中的这里一样。 A世代是我向视图控制器提供MKMapView的地步,B世代是我关闭该视图的地步。内存使用率明显下降,这很好。但是,一旦我点击呈现一个不同的视图控制器,它就会断开连接,就像在Xcode中一样。
我对此进行了大量研究,但我现在真的不知道该怎么办。谢谢,如果你们可以在这里帮助我!
切换到Google地图后,问题已解决...