我在iOS 11.4上遇到m_sceneView.hittest(...)函数的崩溃。相同的代码可以在iOS 12+上运行!
代码如下:
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
guard m_sceneView.session.currentFrame != nil else {return}
DispatchQueue.main.async(execute: {
if let camera = self.m_sceneView.session.currentFrame?.camera,
case .normal = camera.trackingState {
let results = self.m_sceneView.hitTest(self.m_sceneView.center,
options: [SCNHitTestOption.searchMode: 2])
guard let result = results.first else {
print("No Hittest results received")
return
}
// do something with the hittest result !
// ...
// ...
}
})
}
我在最常见的行上遇到“ EXC_BAD_ACCESS(代码= 1,地址= 0x0)”崩溃。
任何想法如何解决此问题?
答案 0 :(得分:1)
我从苹果公司那里得到了解决方案。实际上,这是SceneKit API中的一个错误,该错误已在IOS 12中得到解决,但是对于12之前的版本有一种解决方法:
let options: [SCNHitTestOption: Any] = [SCNHitTestOption.boundingBoxOnly: true]
let hitResults = scnView.hitTest(p, options: options)