我有一个 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/