ios – Swift:为Bluetooth Central Manager选择队列

我正在研究通过BLE与智能设备连接并与之通信的应用程序.

问题是:处理蓝牙事件的最佳做法是什么队列?

我已经阅读了很多教程,在所有这些教程中我发现了这个:

centralManager = CBCentralManager(delegate: self, queue: nil)

他们选择在主队列中处理蓝牙事件(队列:nil),但我认为这不是好习惯.因为它可能是很多查询从中心发送到外围设备而且很多答案都是从外设发送到中心的.

我认为这可能是应用程序工作缓慢的原因,可能会对生产力产生不利影响,对吗?

这会淹没UI更新队列吗?

最佳答案 我在我的蓝牙项目中使用了dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0)作为CBCentralManager已经有一段时间了,它正在完美运行.

所有委托方法都将传递到您指定的队列.如果你对这些方法做了一些非常轻松的操作,我猜你可以保留主队列.但最好使用后台队列.

点赞