【发布时间】:2020-05-11 12:35:37
【问题描述】:
我无法从内存中释放我的 RealityKit ARView()。
我知道 ARKit + SceneKit 存在(曾经?)类似的问题 - 有这样的解决方法:https://stackoverflow.com/a/53919730/7826293 不幸的是,这并不能解决我的问题。
上述解决方案是通过手动删除所有“可疑”内容来实现的。这正是我在更广泛的范围内所做的:
class ViewController_ARViewMemoryTest: UIViewController {
var arView: ARView?
init() {
super.init(nibName: nil, bundle: nil)
arView = ARView(frame: .zero)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
doEverythingThatsNeeded()
}
public func doEverythingThatsNeeded() {
self.arView?.session.pause()
self.arView?.session.delegate = nil
self.arView?.removeFromSuperview()
// Quite a few more removals and resets here, ie. for Combines AnyCancellables
self.arView = nil
}
}
我也从外部调用 doEverythingThatsNeeded():
aRViewMemoryTest?.doEverythingThatsNeeded()
aRViewMemoryTest?.arView = nil
aRViewMemoryTest = nil
这个问题似乎与我已将我的 ARView 或 UIViewController 包装在 SwiftUI UIViewRepresentable / UIViewControllerRepresentable 中这一事实无关。
我认为这一定是一个错误,并且我已在几个月前提交了一份报告。不过,在 Apple 解决潜在问题之前,我希望能找到一些解决方法。
非常感谢!
【问题讨论】:
标签: swift swiftui arkit realitykit