iOS 应用程序意外中断。多线程问题(可能)

iOS app breaks unexpectedly. Multithreading issue (probably)

我有一个应用程序,我可以从输入流中读取数据并将其可视化给用户。当我设置输入流时,我在后台 运行 循环中设置它,打开它然后 运行 后台循环。但有时我的应用程序会意外中断。我不能重复这次崩溃,所以我什至不知道从哪里开始修复它。

我遇到的崩溃是这样的:

它崩溃的方法如下所示:

说是Enqueued from background queue (Thread 3)Thread 3 看起来像这样:

这可能是什么原因?我应该从哪里开始修复它?


奇怪的是,在 Thread 17 中,它崩溃的地方变量 bg_queue 是零,无论如何它通过了我做的 if 条件

if (bg_queue != nil)

但在线程 3 中它不是零:

线程 17

线程 3

看来,您从 GCD 管理的辅助线程创建了一个 运行 循环。您不应从 GCD 管理的线程中获取 运行 循环!

创建您自己的专用线程或使用主线程获得一个 运行 循环。

如果你创造第二个运行循环,你比我更有勇气。我永远不敢那样做,因为我确信这会导致我无法解决的问题。正如你所发现的。

如果您确定自己是比我聪明得多的开发人员,那么抱歉,您只能靠自己了。如果您不确定,请不要那样做!远离二次 运行 循环!