在调用 ARSession reset 方法前,手动将所有 session 的引用置 nil,以避免循环引用。具体实现代码如下:
// 在需要重置会话的地方,加入以下代码
self.sceneView.session.pause()
self.sceneView.session = nil // 将 session 引用置 nil
self.sceneView.delegate = nil // 将 delegate 引用置 nil,避免其他内存泄漏
DispatchQueue.main.async { [weak self] in
self?.sceneView.session.run(self?.sessionConfigurations)
}
PS:这里的 sceneView
和 sessionConfigurations
是根据具体项目而定,建议根据实际情况修改。