![](/img/trans.png)
[英]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.