2016-11-30 3 views
0

私はSwiftを使用してGoogle Nearby Messagesライブラリを使用しています。サンプルコードに従ってライブラリを設定しました。私は機能をテストするためにBluetoothとマイクの両方を使用しています。私はviewDidDisappear()のパブリケーション/サブスクリプションをdeallocします。基本的には、2行のコードです:Google Nearbyメッセージがクラッシュしました:割り当て解除時にAudioRecorderCallbackQueue

ただし、私がビューコントローラを閉じると、アプリケーション全体がクラッシュすることがあります。スタックトレースは、クラッシュがオーディオと何か関係があることを示しています。ここではスタックトレースの一部です:

Crashed: AudioRecorderCallbackQueue 
0 libdispatch.dylib    0x18df39f60 _dispatch_barrier_sync_f_slow + 596 

1 ProjectLibs     0x1037ad8e0 std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::vector(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&) + 2808 

2 ProjectLibs     0x1037ad8e0 std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::vector(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&) + 2808 

3 ProjectLibs     0x1037ad0f4 std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::vector(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&) + 780 

4 libsystem_blocks.dylib   0x18df7ea28 _Block_release + 144 

誰もがクラッシュを起こしたことがある、そしてどのようにそれを解決したり、クラッシュからアプリを防ぐために、どのような任意のアイデアを持っていますか?

ありがとうございます!

+0

はあなたにもnilにメッセージマネージャを設定しようとしたことがありますか? – CodeBender

+0

@CodeBender試しましたが、それでもクラッシュします –

+0

Elsie、近くのバージョンのメッセージを使用していますか? iOSのどのバージョンですか? –

答えて

0

私はあなたのことをあなたが働いていると述べたように振る舞います。ロギングを有効にすることで、私はまだあなたのクラッシュが発生している可能性のある、短い時間の間、メッセージを送信していることに気付きます。

あなたは、このコマンドを使用してログ記録を有効にすることができます

GNSMessageManager.setDebugLoggingEnabled(true) 

プロセスの早い段階でnilにそれらを設定することで、私はViewControllerをを完全に閉鎖される前に、それらが送信されて停止するように取得することができました。

次が(でもviewWillDisappear前)の可能な最も早い時点でそれをしない:

override func willMove(toParentViewController parent: UIViewController?) { 
    super.willMove(toParentViewController: parent) 

    if parent == nil { 
     publication = nil 
     subscription = nil 
    } 
} 
関連する問題