【发布时间】:2015-07-12 21:42:11
【问题描述】:
事情是这样的,我有一个用 swift 编写的演示应用程序,我的 MkMapView 占用了我的 60mb 到 80mb 的可用内存(使用模拟器),所以我想释放它,特别是因为它无论如何都会完全重新加载地图我再次点击“打开地图”按钮。
所以我将覆盖func viewWillDisappear,我尝试运行的代码将是:
self.mapView.mapType = MKMapType.Hybrid
self.mapView.mapType = MKMapType.Standard
self.mapView.showsUserLocation = false
self.mapView.delegate = nil
self.mapView.removeFromSuperview()
self.mapView = nil
但是,这些都不起作用。 通过此更改,我的应用程序在新启动后保持 ~20mb,然后我单击“打开人”按钮,内存使用量跃升至 170mb(!),之后我可以使用 navBarButton 跳回,但内存使用量不会低于 ~120 或类似的东西。哪个病了。我要恢复记忆!
【问题讨论】:
-
您是否过早优化?还是你有泄漏?每次打开此视图时内存使用量是否都会增加?或者一旦打开,它会发生很大的跳跃,但随后就停留在这个水平而不是下降?
-
工具没有显示任何泄漏,除了一些罕见的棘手的与 swift 相关的泄漏,我很确定 MkMapView 正在“按设计”消耗内存,我可以看到它是如何建立内存使用的我打开地图,所以是的,每次打开视图时使用量都会增加,但它始终如一,无论我打开关闭视图多少次,它都不会超过 160-170 mb。是的,在我按下后它会释放一些内存,大约 10%-15%,但是当你再次打开地图时,它会回滚到 100%(即 160-170mb)
-
@AnatoleyKovalev 我遇到了类似的问题。如果你解决了,请告诉我任何解决方案。谢谢
-
@Johnny 你在模拟器上测试你的应用吗?因为事实证明在模拟器中吃那么多内存是可以的。尝试在真实设备上进行测试。使用 mapkit 时,我观察到模拟器和真实设备之间的内存消耗相差 5 倍以上
-
是的,我正在模拟器上对其进行测试。好吧,如果这不是真实设备上的问题,那我还可以..谢谢
标签: swift memory mkmapview mapkit