MKMapView每次加载其视图时都会占用大量内存

时间:2016-04-05 04:49:19

标签: ios xcode swift mkmapview

我有一个非常简单的应用程序,有几个视图控制器。第二个视图控制器中有一个MKMapView。它设置正确,功能正常。问题是,每次我加载它的视图时,内存使用量会跳跃~30mb,并且永远不会回落,所以每次进入视图时它都会继续跳跃并最终变得超高。 当我离开控制器时,我尝试删除地图视图:

override func viewWillDisappear(animated: Bool) {
        map.removeFromSuperview()
    }

但它对内存没有任何影响。地图视图委托设置为其视图控制器。

我尝试使用Xcode仪器检查泄漏,但没有找到任何东西。

有谁知道如何解决这个问题?

由于

编辑: 添加这个似乎有效:

func removeNastyMapMemory() {
        map.mapType = MKMapType.Hybrid
        map.delegate = nil
        map.removeFromSuperview()
        map = nil
    }

    override func viewWillDisappear(animated: Bool) {
        removeNastyMapMemory()
    }

1 个答案:

答案 0 :(得分:5)

这不是Swift问题,来自Objective-C时代。处理此问题的可能方法取决于应用程序的情况和行为。

  1. 如果您多次使用Map(或地点),则只创建一个(共享)实例。您可以随时使用它。

  2. 或者,如果您只使用一次,请尝试此处的解决方案https://stackoverflow.com/a/25419783/1603234。这可能有所帮助。减少一点。但不是全部。