我有一个非常简单的应用程序,有几个视图控制器。第二个视图控制器中有一个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()
}
答案 0 :(得分:5)
这不是Swift问题,来自Objective-C时代。处理此问题的可能方法取决于应用程序的情况和行为。
如果您多次使用Map(或地点),则只创建一个(共享)实例。您可以随时使用它。
或者,如果您只使用一次,请尝试此处的解决方案https://stackoverflow.com/a/25419783/1603234。这可能有所帮助。减少一点。但不是全部。