CBCentralManagerState(iOS 5.x 到 9.x)和 CBManagerState(iOS 10.x 或更高版本)之间的 CoreBluetooth 兼容性问题 [重复]

Posted

技术标签:

【中文标题】CBCentralManagerState(iOS 5.x 到 9.x)和 CBManagerState(iOS 10.x 或更高版本)之间的 CoreBluetooth 兼容性问题 [重复]【英文标题】:CoreBluetooth compatibility issues between CBCentralManagerState (iOS 5.x to 9.x) and CBManagerState (iOS 10.x or above) [duplicate] 【发布时间】:2016-10-05 07:07:20 【问题描述】:

ios SDK 10.0 开始,CBCentralManager 类现在继承自 CBManager

CBManager 在 iOS 10.0 中引入,在早期版本中不可用。

state 属性现在枚举为CBManagerState

CBManagerState 在 iOS 10.0 中也有引入,在早期版本中不可用。

这意味着CBCentralManagerstate 属性是CBManagerState 类型,仅适用于iOS 10.0

所以当你读取状态时,你会得到一个CBManagerState。但是对于早期的 iO​​S 版本,该类型不可用,因此您必须将其转换为以前识别的(但在 iOS 10.0 中已弃用)CBCentralManagerState 枚举类型。

CBCentralManagerState(rawValue: centralManager.state.rawValue) ?? .Unknown

现在您可以在早期的 iO​​S 版本中使用此 state 属性。当您的应用准备好为 iOS 10.0 或更高版本时,您才可以直接将其用作CBManagerState

【问题讨论】:

***.com/questions/39577272/… ? 【参考方案1】:

'CBManagerState' 仅适用于 iOS 10.0 或更高版本。

用 CBManagerState 替换所有 CBCentralManagerState 和 CBPeripheralManagerState 枚举。 枚举是二进制兼容的,因此您的代码可以在任何 iOS 版本上正常运行。 如果您仍然希望能够使用 Xcode 7 编译您的代码,您可以添加一些非常简单的定义。

#if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_9_3  
#define CBManagerState CBCentralManagerState  
#define CBManagerStateUnknown CBCentralManagerStateUnknown  
#define CBManagerStateResetting CBCentralManagerStateResetting  
#define CBManagerStateUnsupported CBCentralManagerStateUnsupported  
#define CBManagerStateUnauthorized CBCentralManagerStateUnauthorized  
#define CBManagerStatePoweredOff CBCentralManagerStatePoweredOff  
#define CBManagerStatePoweredOn CBCentralManagerStatePoweredOn  
#endif  

如果您想了解有关此更改的更多信息,请点击以下链接:

Best practice for checking if an enum exists in iOS version?

CBCentralManagerState deprecated iOS 10

【讨论】:

以上是关于CBCentralManagerState(iOS 5.x 到 9.x)和 CBManagerState(iOS 10.x 或更高版本)之间的 CoreBluetooth 兼容性问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO

IO模型--阻塞IO,非阻塞IO,IO多路复用,异步IO

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO