Swift 枚举的可用性是否重要?

Does availability matter for Swift enums?

Swift要求我在使用CBManagerState时添加一个@available注解,在iOS10中添加的枚举。CBManagerState只是一个替换 CBCentralManagerStateCBPeripheralManagerState,并且在 C-land 使用新的替换很好,因为枚举只是整数。

如果我想支持 iOS 9,这在 Swift 2.3 中是否也安全,还是我应该坚持使用已弃用的版本?

是的,可用性对 SDK 中的所有符号都很重要。问题不是数字在小于 10 的 iOS 版本中不可用,而是实际的 CBManagerState 符号不可用。

如果您的目标是 iOS 9,请使用该 SDK 中可用的符号和枚举(您称之为 "deprecated" 类型)。如果您特别想要支持 iOS 10 功能,请对 iOS 10 功能或版本使用可用性检查,如果检查条件符合要求,则回退到 iOS 8/9 功能没遇到。