如何从内存中卸载 GMSMapView?
Posted
技术标签:
【中文标题】如何从内存中卸载 GMSMapView?【英文标题】:How to unload GMSMapView from memory? 【发布时间】:2021-11-29 04:04:46 【问题描述】:我有像这样的带有 GMSMapView(从情节提要连接)的 UIViewController
@IBOutlet weak var map: GMSMapView!
在
override func viewDidDisappear(_ animated: Bool)
super.viewDidDisappear(animated)
self.map.delegate = nil
self.map.clear()
self.map.removeFromSuperview()
self.map = nil
我也有
deinit print "DEINIT ME"
Deinit 有效 - 我看到了打印消息。
在应用程序运行期间,我必须多次加载和卸载此视图控制器。解雇 - 这是呈现的视图控制器。 每次我使用它 - 在内存中添加新的 GMSMapView。 我使用控制器十次 - 十个 GMSMapView 对象将在内存图中,因此这与巨大的内存泄漏有关。
当我关闭此视图控制器时,
【问题讨论】:
【参考方案1】:viewDidDisappear
中的代码没用。地图视图已经被定义为弱,这意味着当视图控制器取消初始化时它将从内存中释放。如果取消初始化后视图控制器仍然存在,请检查您的内存图。如果视图控制器仍然存在,则视图控制器中的其他一些属性持有对视图控制器的强引用,与地图无关。
否则这可能是 GMSMap 框架中的问题。
【讨论】:
以上是关于如何从内存中卸载 GMSMapView?的主要内容,如果未能解决你的问题,请参考以下文章
如果从 Storyboard 添加约束,则 GMSMapView 不显示任何内容