2017-11-15 8 views
0

質問や回答が見つからないので、自分で投稿してください。 Allow camera controlがSCNViewで有効になっているときにアプリがクラッシュし、スワイプしてカメラが回転を開始し、ナビゲーションバーの[戻る]ボタンを押します。クラッシュスタックトレース:SCNCameraが回転しているときに戻るボタンでアプリケーションがクラッシュする

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18) 
    frame #0: 0x0000000113e3d94b libobjc.A.dylib`objc_msgSend + 11 
    frame #1: 0x00000001158a2eb6 SceneKit`__42-[SCNCameraController _setInertiaRunning:]_block_invoke.166 + 31 
    frame #2: 0x00000001173e33f7 libdispatch.dylib`_dispatch_call_block_and_release + 12 
    frame #3: 0x00000001173e443c libdispatch.dylib`_dispatch_client_callout + 8 
    frame #4: 0x00000001173ef6f0 libdispatch.dylib`_dispatch_main_queue_callback_4CF + 628 
    frame #5: 0x00000001149bbee9 CoreFoundation`__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9 
    frame #6: 0x0000000114980592 CoreFoundation`__CFRunLoopRun + 2402 
    frame #7: 0x000000011497f9b9 CoreFoundation`CFRunLoopRunSpecific + 409 
    frame #8: 0x00000001199a29c6 GraphicsServices`GSEventRunModal + 62 
    frame #9: 0x000000011029b5e8 UIKit`UIApplicationMain + 159 
    * frame #10: 0x000000010e6f73e7 ShowIt`main at AppDelegate.swift:13 
    frame #11: 0x0000000117460d81 libdyld.dylib`start + 1 
    frame #12: 0x0000000117460d81 libdyld.dylib`start + 1 

メッセージは、割り当てられていないカメラに送信され、アプリがクラッシュします。 nilコントローラポップへ

override func viewDidDisappear(_ animated: Bool) { 
    super.viewDidDisappear(animated) 

    if isMovingFromParentViewController { 
     // Prevent crash on back tap when camera rotates 
     scnView.pointOfView = nil 
    } 
} 

基本的に設定されたカメラノード:

+0

ビュー内の 'pointOfView'が何であるか不明です。しかし、それを「弱い」参照にすることで修正できるようです。私はあなた自身の答えからこれを推測する。 – Ryan

+0

私は 'pointOfView'に何も設定していません –

+0

その理由はビューに強い参照があるようです。弱くしてみてください。 – Ryan

答えて

0

は、この解決策を見つけました。

関連する問題