首页 > 解决方案 > 如果 Swift 中有两个不同的类符合 CBCentralManagerDelegate 或 CBPeripheralManagerDelegate 协议,这是否有意义?

问题描述

我正在实现不同的服务 UUID,一个用于连接到其他 BLE 设备,另一个用于实现不同的用例,使用 iBeacon 协议中的一些功能。最后,我有两个不同的类来实现 Central 和 Peripheral Manager,它们都符合相应的委托。两个类都将从每个中央/外围管理器接收相应的事件吗?

标签: iosswiftbluetooth-lowenergyibeacon

解决方案


是的,一般来说,可以并允许有两个不同的 CLPeripheralManager 和 CLCentralManager 实例及其对应的委托。您将收到每个回调。

但是,这可能会给您的应用程序在处理两个实例共有的生命周期事件(例如蓝牙电源开/关)时增加不必要的复杂性。在设计类时要小心考虑到这一点。

通常,我构建的应用程序需要中央和外围功能以具有用于管理 CBPeripheralManager 和回调的单个类,以及用于管理 CBCentralManager 和回调的不同的单个类。但我总是避免拥有多个 CBPeripheralManager 实例或多个 CBCentralManager 实例,因此外围设备只有一个委托,中心只有一个委托。


推荐阅读