gpt4 book ai didi

ios - 当 View Controller 仍在 View Controller 堆栈中但不可见时,如何防止 MKMapView 占用这么多内存?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:28:25 26 4
gpt4 key购买 nike

我有一个以 MKMapView 作为 subview 的 View Controller 。这个 View Controller 依次转到一个 View Controller ,而 View Controller 又转到另一个 View Controller 。 MKMapView 可以使我的应用程序内存占用高达 60mb。

在呈现其他 View Controller 时,有没有一种方法可以减少 MKMapView 的占用空间,而无需将其从其 super View 中完全删除并重新分配?

最佳答案

在不改变 View 层次结构的情况下完成此操作的一种方法是切换 MKMapView 的 mapType。这导致 MKMapView 释放其所有 map 图 block 并显着减少其内存占用。

- (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 中切换 mapType 将导致在返回 View 时释放图 block 。如果有人知道为什么会加分?

关于ios - 当 View Controller 仍在 View Controller 堆栈中但不可见时,如何防止 MKMapView 占用这么多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22496289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com