Gus*_*ava 5 queue grand-central-dispatch ios core-bluetooth swift
我正在开发将通过BLE与智能设备连接并与其通信的应用程序。
问题是:处理蓝牙事件的最佳实践是在哪个队列中?
我阅读了很多教程,在所有教程中我都发现了这一点:
centralManager = CBCentralManager(delegate: self, queue: nil)
Run Code Online (Sandbox Code Playgroud)
他们选择处理主队列(queue: nil)中的蓝牙事件,但我认为这不是一个好习惯。因为可能有很多查询从中央设备发送到外围设备,并且有很多答案从外围设备发送到中心设备。
我认为这可能是应用程序运行缓慢的原因,并且可能会对生产力产生不利影响,对吗?
这会淹没UI更新队列吗?
我在我的蓝牙项目中为 CBCentralManager 使用dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0) 一段时间,并且它工作完美。
^ 从头开始。我不建议使用全局队列。原因是全局队列是并发队列,而您可能需要串行队列。创建一个新的DispatchQueue(label: "CentralManager")并将其传递给CBCentralManager.
所有委托方法都将传递到您指定的队列。如果您对这些方法进行一些非常轻的操作,我想您可以保留主队列。但最好使用后台队列。
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |