[英]How can I keep a view controller in memory after its popped from the stack?
[英]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.