关于ios:App因MKMapView内存问题而崩溃

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时,它就会因为"丢失连接"而崩溃。

我是内存管理的新手,但是这里有用于仪器配置文件的屏幕截图:

instrument profile

就像图片中的这里一样。 A世代是我向视图控制器提供MKMapView的地步,B世代是我关闭该视图的地步。内存使用率明显下降,这很好。但是,一旦我点击呈现一个不同的视图控制器,它就会断开连接,就像在Xcode中一样。

我对此进行了大量研究,但我现在真的不知道该怎么办。谢谢,如果你们可以在这里帮助我!


切换到Google地图后,问题已解决...