gpt4 book ai didi

ios - GMSMapView clear 不清除内存

转载 作者:行者123 更新时间:2023-12-01 18:05:43 26 4
gpt4 key购买 nike

我的应用程序中有一个 GMSMapView。打开 map 屏幕的应用占用 150 MB 内存。

有时我添加了很多多边形。之后,应用程序占用 230 MB。

调用 [GMSMapView clear] 方法后,所有多边形都消失了,但应用程序仍占用 230 MB 内存。

指向多边形的指针不存储在其他任何地方。如何让 map 清除内存,为什么在调用'clear'方法后没有发生?

最佳答案

好吧,这是痛苦的**......我没有找到官方文档。

我的解决方案:

swift 3.0

1)不使用 Storyboard,在代码中创建 mapView:

@IBOutlet weak fileprivate var mapViewContainer: UIView!

weak fileprivate var mapView: GMSMapView? {
didSet {
//you can config and customise your map here
self.configureMapView()
}
}

//If you use clustering
fileprivate var clusterManager: ClusterManager?
fileprivate var clusterRenderer: ClusterRenderer?

2) 创建 viewController 配置函数并在 viewDidLoad 之前调用它:

func configure() {
mapView = GMSMapView()
mapView?.delegate = self
}

3) 布局并将 mapView 添加到您的 UI:

override func viewDidLoad() {
super.viewDidLoad()

if let mapView = mapView {
mapViewContainer.addSubview(mapView)
//Create constraints as you wish
mapView.fillView()
mapViewContainer.layoutSubviews()
}
}

4) 现在创建函数:

func releaseMemory() {

if
let mapView = mapView,
let clusterManager = clusterManager {

clusterManager.clearItems()
mapView.clear()
mapView.delegate = nil
mapView.removeFromSuperview()

}

clusterManager = nil
clusterRenderer = nil
mapView = nil
}

你在ViewDidDisappear中调用它,或者调用delegate...

releaseMemory() 函数清除内存,不是很聪明,但是可以用。

关于ios - GMSMapView clear 不清除内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494212/

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