如何解决第二次实例化 ARSCNView 时崩溃
在销毁 ARSCNView 后尝试再次实例化它时,我的 iPhone 应用程序出现问题。
在我的 ViewController 中,我以编程方式为动作捕捉交互创建了一个 ARSCNView:
func addARSceneView() {
arSceneView = ARSCNView(frame: self.view.frame)
arSceneView.loops = true
arSceneView.session.delegate = self
self.view.addSubview(arSceneView)
arSceneView.session.run(ARBodyTrackingConfiguration())
}
当用户离开应用的这一部分时,我会像这样将其拆除:
func removeARSceneView() {
arSceneView.session.pause()
arSceneView.pause(self)
arSceneView.session.delegate = nil
arSceneView.removeFromSuperview()
arSceneView = nil
}
后来,当我尝试使用上面的第一个函数第二次实例化 ARSCNView 时,它在构造函数中因 EXC_BAD_ACCESS 崩溃:
我还尝试使用包含 ARSCNView 的 xib 中的视图,但在该视图的 init(coder) 函数中发生了同样的问题。
我没有发现这个问题,我猜开发者通常只创建一个 ARSCNView 一次。
解决方法
我找到了罪魁祸首,在创建了一个只有 ARSCNView 的示例项目后,它没有这个问题。我开始从我的原始项目中剥离所有内容,直到它与样本一样准系统。那并没有解决它,所以我比较了两者的每一个小设置,并看到:在原始项目的“运行”方案中,在“诊断”下,我勾选了“金属 – API 验证”关闭强>。我不记得我什么时候以及为什么这样做了;我认为这是在某一时刻提高性能的一些尝试。但是,启用此复选框完全解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。