繁体   English   中英

当视图控制器仍在视图控制器堆栈中但不可见时,如何防止MKMapView占用太多内存?

[英]How can I prevent MKMapView from eating up so much memory when the view controller is still in the view controllers stack, but is not visible?

我有一个MKMapView作为子视图的视图控制器。 该视图控制器依次选择一个视图控制器,该视图控制器依次选择另一个视图控制器。 MKMapView可以使我的Apps内存占用高达60mb。

当呈现其他视图控制器时,是否有一种方法可以减少MKMapView的占用空间,而又不从其超级视图中完全删除它并取消分配它呢?

一种无需更改视图层次结构即可完成此操作的方法是切换MKMapView的mapType。 这导致MKMapView释放了所有地图图块,并显着减少了其内存占用量。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    // Toggling this property forces the map view
    // to release its tiles, freeing up memory.
    self.mapView.mapType = MKMapTypeHybrid;
    self.mapView.mapType = MKMapTypeStandard;
}

在分析配置文件中的堆分配时,我发现内存占用减少了30mb。

注意:如果在做这招行不通viewDidDisappear ,在切换地图类型viewDidDisappear会造成瓷砖在回到视图被释放。 如果有人知道为什么会获得积分?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM