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

标签 ios objective-c multithreading objective-c-blocks grand-central-dispatch

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

我得到的崩溃是这样的: enter image description here

它崩溃的方法如下所示: enter image description here

它表示它是从后台队列(线程 3)排队Thread 3 看起来像这样: enter image description here

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


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

if (bg_queue != nil)

但在线程 3 中它不是 nil:

线程 17 enter image description here

线程 3 enter image description here

最佳答案

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

创建自己的专用线程或使用主线程来获取运行循环。

关于iOS 应用程序意外中断。多线程问题(可能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197932/

相关文章:

java - 高尔顿板的java实现

c# - 如何确保测试启动的所有线程在完成前都已停止

iphone - 以编程方式创建的按钮不会在 iOS 的自定义 View 中触发事件

ios - DispatchQueue 绑定(bind)到确切的线程

ios - 在 IOS 中迭代 NSDictionary 和计时事件

ios - 如何在 objective-c 的AppDelegate中加载NSUserDefaults standardUserDefaults

c - 一个消费者和两个生产者中的任何一个

ios - 在 iOS iTunes 库中设置音乐文件的插图(越狱)

ios - UIView 周围的虚线边框

ios - UITableViewCell - 约束仅在重新加载后更新