我正在使用Swift使用Google附近的消息库。我按照示例代码来设置库。我同时使用蓝牙和麦克风来测试功能。我在viewDidDisappear()中取消分配发布/订阅。基本上是两行代码:
publication = nil
subscription = nil
但是,当我关闭视图控制器时,有时整个应用都会崩溃。 stacktrace仅显示崩溃与音频有关。这是堆栈跟踪的一部分:
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
有谁知道导致崩溃的原因是什么,以及如何解决或防止应用崩溃?
谢谢!
最佳答案
我设置了一个应用,使其表现出您描述的工作方式。通过启用日志记录,我注意到它仍在短时间内发送消息,这很可能是您崩溃的原因。
您可以使用以下命令启用日志记录:
GNSMessageManager.setDebugLoggingEnabled(true)
通过在过程中将它们设置为nil,我可以使它们在视图控制器完全关闭之前停止发送。
以下是在最快的时间(甚至在viewWillDisappear之前)执行的操作:
override func willMove(toParentViewController parent: UIViewController?) {
super.willMove(toParentViewController: parent)
if parent == nil {
publication = nil
subscription = nil
}
}
关于ios - Google附近的邮件丢失了:释放后的AudioRecorderCallbackQueue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40899896/