簡體   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