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