gpt4 book ai didi

ios - Swift:为蓝牙中央管理器选择队列

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:39 29 4
gpt4 key购买 nike

我正在开发将通过 BLE 与智能设备连接并与之通信的应用。

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

我读了很多教程,在所有教程中我都发现了这一点:

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

他们选择在主队列 (queue: nil) 中处理蓝牙事件,但我认为这不是好的做法。因为可能有很多查询从中央设备发送到外围设备,而很多答案从外围设备发送到中央设备。

我认为这可能是应用运行缓慢的原因,并且可能对工作效率产生不利影响,对吗?

这会淹没 UI 更新队列吗?

最佳答案

我在我的蓝牙项目中为 CBCentralManager 使用 dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0) 有一段时间了,它工作完美。

^ 从头开始​​。我不建议使用全局队列。原因是全局队列是并发队列,而您可能需要串行队列。创建一个新的 DispatchQueue(label: "CentralManager") 并将其传递给 CBCentralManager

所有委托(delegate)方法都将传送到您指定的队列。如果你对这些方法做一些非常轻的操作,我想你可以保留主队列。但是最好使用后台队列。

关于ios - Swift:为蓝牙中央管理器选择队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390270/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com