2016-11-30 1 views
0

Google Nearby Messages 라이브러리를 사용하려면 Swift를 사용하고 있습니다. 샘플 코드를 따라 라이브러리를 설정했습니다. 나는 블루투스와 마이크를 사용하여 기능을 테스트하고있다. viewDidDisappear()에서 게시/구독을 dealloc. 내가보기 컨트롤러를 해제 할 때Google Nearby Messages Crashed : 할당 취소시 AudioRecorderCallbackQueue

publication = nil 
subscription = nil 

그러나, 때로는 전체 응용 프로그램이 충돌합니다 : 기본적으로는 두 줄의 코드입니다. 스택 추적은 충돌이 오디오와 관련이 있음을 보여줍니다. 여기에 스택 트레이스의 일부 :

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

당신이에 전무뿐만 아니라 메시지 관리자를 설정하는 시도? – CodeBender

+0

@CodeBender 시도했지만 여전히 충돌합니다 –

+0

Elsie, 가까운 메시지의 버전을 사용하고 있습니까? 그리고 iOS 버전은 무엇입니까? –

답변

0

귀하의 기술대로 작동하도록 앱을 설정했습니다. 로깅 기능을 활성화하면 잠시 동안 메시지를 보내는 중임을 알 수 있습니다.이 메시지는 사용자의 충돌이 발생한 지점에서 발생할 가능성이 큽니다.

이 명령을 사용하여 로깅을 사용할 수 있습니다 :

GNSMessageManager.setDebugLoggingEnabled(true) 

을, 나는의 ViewController가 완전히 폐쇄되기 전에 그들에게 전송되는 중지 얻을 수 이전 과정에서 전무했다하도록 설정하면.

다음은 (심지어 viewWillDisappear 전) 가능한 조속한 시점에서 작업을 수행합니다

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

    if parent == nil { 
     publication = nil 
     subscription = nil 
    } 
} 
관련 문제