在项目中我正在研究我正在使用单例类来处理所有与蓝牙相关的任务。它的CBCentralManager
对象处理与多个外围设备的连接。当CBPeripherals
被发现时,我让用户选择外围设备并连接到它。建立连接后,他/她可以选择另一个可用设备,因此按顺序连接。
但是当涉及到检索连接时,我得到了一系列检索到的外围设备。检索多个外围设备的最佳做法是什么?是否可以立即创建到外设的多个连接请求,还是应该按顺序执行?
现在我正在循环检索外围设备并尝试与它们连接而无需等待。它可以工作,但需要一些时间,虽然它可能与我正在连接的硬件有问题。
当我触发方法retrievePeripheralsWithIdentifiers:
时,它没有给我任何委托回调,所以我正在使用centralManager:didDisconnectPeripheral:error:
方法进行检索,我在哪里
NSArray *retrieved = [self.centralMgr retrievePeripheralsWithIdentifiers:identifiers];
然后遍历检索到的对象。
它有效,但这是正确的方法吗?
答案 0 :(得分:5)
在iOS 7中,Core Bluetooth API已更新。 retrievePeripheralsWithIdentifiers:
直接返回您请求的外围设备,不再有回调。
经验法则是如果你有一个CBPeripheral对象,那么你可以重复使用它。无需再次检索。关于您目前使用API的方式,您的问题有点令人困惑,但无论何时您有疑问,都可以参考Core Bluetooth Programming Guide。
只有一个例外:如果Core Bluetooth框架重新启动或重新启动,则CBPeripheral对象将失效。重复使用会导致错误。在这种情况下,必须获得新的实例。