2017-12-01 11 views
2

プロジェクト:https://github.com/cgranthovey/SCNViewTestVCを破棄した後にSceneKitがクラッシュする

このアプリケーションには2つのVCがあります。
私が2番目のVCに繋がるとき、私はSCNSceneを以下のコードで設定しました。

override func viewDidLoad() { 
    super.viewDidLoad() 
    mySCNView.autoenablesDefaultLighting = true 
    mySCNView.allowsCameraControl = true 
    mySCNView.backgroundColor = UIColor.black 
} 

override func viewWillAppear(_ animated: Bool) { 
    let pyramid = SCNNode() 
    pyramid.geometry = SCNPyramid(width: 1, height: 2, length: 1) 
    pyramid.geometry?.firstMaterial?.diffuse.contents = UIColor.purple 
    pyramid.geometry?.firstMaterial?.diffuse.contents = UIColor.white 
    pyramid.position = SCNVector3(0, 0, 0) 
    pyramid.eulerAngles = SCNVector3(x: 0, y: 10, z: 180 * Float.pi) 
    let shapeScene = SCNScene() 
    shapeScene.rootNode.addChildNode(pyramid) 
    mySCNView.scene = shapeScene 
} 

私はその後、画像をフリックすると、それが回転しており、それが回転している間、私はバックボタン

@IBAction func backBtnPress(_ sender: AnyObject){ 
    self.navigationController?.popViewController(animated: true) 
} 

私はクラッシュを取得するを押した場合。

Thread 1: EXC_BAD_ACCESS (code=1, address=0x101f2210) 

enter image description here

私は停止し、その後、戻るボタンを押して回転を待つ場合は何のクラッシュはありません。何が起こっているのか、これを修正する方法は?

+0

このクラッシュは、デバイスまたはシミュレータで発生しますか。 –

+0

[このオプション](https://imgur.com/a/6kOYd)の選択を解除し、スタックトレースのスクリーンショットを更新できますか? –

+0

@AllenHumphreysそれは両方で起こっている。 – Chris

答えて

1

私の提案では、スタックトレースを展開した後、興味深い情報が表示されます。特に、クラッシュを引き起こすコードは、SCNViewのカメラコントローラの慣性システムに関係しているようです。

シーンのビューコントローラを終了する前に慣性を停止しようとすると、簡単なテストで問題が軽減されるようです。 iOS 11での私の経験では、このクラッシュは私にとってはシミュレータでしか起こらなかったが、モーダルプレゼンテーションを使用していた。私はこれがおそらくSCNCameraControllerのバグだと思う。

@IBAction func backBtnPress(_ sender: AnyObject){ 

    chariotView.defaultCameraController.stopInertia() 

    self.navigationController?.popViewController(animated: true) 
} 
+0

働いた!ありがとう、トン。私は将来、スタックトレースを拡張することを忘れないでください。 – Chris

関連する問題