Мне не удается освободить мой RealityKit ARView()
из памяти.
Я знаю, что есть (были?) Похожие проблемы с ARKit + SceneKit - с обходными путями, подобными этому: { ссылка }, который, к сожалению, не решает мою проблему.
Решения, описанные выше, работают путем удаления всего «подозрительного» вручную. Это именно то, что я сделал в еще более широкой области:
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
.
Я считаю, что это должно быть ошибкой, и я подал отчет за месяцы go. Однако я надеюсь на обходные пути, которые помогут, пока Apple не исправит потенциальную проблему.
Большое спасибо!