ios - 蓝牙停止主线程

标签 ios multithreading bluetooth

我有一个 iOS 8 应用程序,我正在使用它通过蓝牙将数据从一台设备传输到另一台设备。

我拥有所有可用的服务和特性,可以进行实际传输。

我试图将中央管理器推送到另一个线程,但中央端的 UI 会锁定,直到传输完成。当我查看仪器时,我看到线程 1 刚刚被钉住。

我已经试过了,但似乎没有用...

[[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)];

CBManager 放入后台的正确方法是什么,这样它就不会阻塞 UI 线程?

最佳答案

在初始化 CBCentralManager 时指定一个队列将在该队列上传递 CBCentralManager 委托(delegate)事件,但是您的数据传输是由 CBPeripheral 方法执行的。您应该在后台线程上显式地将调用分派(dispatch)给 writeValue

关于ios - 蓝牙停止主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594433/

相关文章:

ios - 使用贝塞尔曲线绘制螺旋

ios - 已弃用发送同步请求。我怎样才能用 dataTaskWithRequest 达到同样的目的?

c++ - 在 MPI、C++ 上分配单个堆栈数组

java - 如何将任务放回到ThreadPoolExecutor的BlockingQueue中?

ios - 将捆绑 ID 注册到应用商店证书和 ID 时出现问题

ios - 如何转换数组的字符串值

java - 在Java中使用ThreadPoolExecutor时如何通过超时取消特定任务?

android - 使用蓝牙打印机从 Android 应用程序打印数据

iphone - iPhone 上的蓝牙链接 key

c# - Windows Phone 8.1 连接到蓝牙智能心率监测器