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 管理的线程中获取 运行 循环!
创建您自己的专用线程或使用主线程获得一个 运行 循环。
如果你创造第二个运行循环,你比我更有勇气。我永远不敢那样做,因为我确信这会导致我无法解决的问题。正如你所发现的。
如果您确定自己是比我聪明得多的开发人员,那么抱歉,您只能靠自己了。如果您不确定,请不要那样做!远离二次 运行 循环!
我有一个应用程序,我可以从输入流中读取数据并将其可视化给用户。当我设置输入流时,我在后台 运行 循环中设置它,打开它然后 运行 后台循环。但有时我的应用程序会意外中断。我不能重复这次崩溃,所以我什至不知道从哪里开始修复它。
我遇到的崩溃是这样的:
它崩溃的方法如下所示:
说是Enqueued from background queue (Thread 3)
。 Thread 3
看起来像这样:
这可能是什么原因?我应该从哪里开始修复它?
奇怪的是,在 Thread 17
中,它崩溃的地方变量 bg_queue
是零,无论如何它通过了我做的 if 条件
if (bg_queue != nil)
但在线程 3 中它不是零:
线程 17
线程 3
看来,您从 GCD 管理的辅助线程创建了一个 运行 循环。您不应从 GCD 管理的线程中获取 运行 循环!
创建您自己的专用线程或使用主线程获得一个 运行 循环。
如果你创造第二个运行循环,你比我更有勇气。我永远不敢那样做,因为我确信这会导致我无法解决的问题。正如你所发现的。
如果您确定自己是比我聪明得多的开发人员,那么抱歉,您只能靠自己了。如果您不确定,请不要那样做!远离二次 运行 循环!