iOS蓝牙CBCharacteristic UUID已经被弃用?

6
在最新的苹果文档中,CBCharacteristic的UUID属性被画了一条线,并注明它只在5.0到7.1版本中可用。但通常情况下期望看到的“已弃用”一词却不见了踪影。
更重要的是,没有任何建议告诉我们如何识别一个特征,例如当我们在委托方法peripheral:didUpdateValueForCharacteristic:中传递一个特征时,判断我正在处理的是哪个特征至关重要。CBCharacteristic实例的描述符成员为空。还有什么呢?苹果的意图是让我们如何区分这些特征?UUID的整个目的就是为了标识...

您可以使用CBDescriptors及其相应的委托方法。 - Paulw11
NSLog(@"描述符 %@", characteristic.descriptors);输出结果为描述符 (null)很难看出这有什么帮助。 - Andrew Duncan
1
实际上,在测试后,UUID属性在iOS 8的CBCharacteristic上仍然可用。我不确定文档出了什么问题。 - Paulw11
2
我应该检查一下。是的,即使在部署目标设置为8.0的项目中,您也可以(即编译器不会抱怨)访问CBCharacteristic的UUID成员。嗯。CBService中也出现了相同的删除线。文档错误?它看起来很明确和有意,但可能是某些自动化过程的结果,以及一些垃圾输入。 - Andrew Duncan
你应该给下面的其中一个答案打赏 - 这是常见的礼貌,特别是因为两个答案都是正确的,而且节省了我的时间。 - David H
2个回答

18

查看CBCharacteristic标头可以更好地了解此问题。该类中不再有UUID属性,但CBCharacteristic现在是CBAttribute的子类,后者具有UUID属性。而这个(新的)父类从iOS 8开始可用。

这可以解释为什么UUID成员具有删除线,但没有“已弃用”警告:您仍然可以获取UUID,但它是继承自CBAttribute而不是直接属于CBAttribute。


我也刚刚发现这个问题,因为文档实在是误导人。自从iOS 8以来,CBService、CBCharacteristic和CBDescriptor都继承自CBAttribute,而CBAttribute确实有UUID属性。 - Evan K. Stone

10

UUID从iOS8开始成为继承属性

以下是苹果文档中的证据

iOS8 API diffs中的CoreBluetooth更改

CBAttribute.h (已添加)

已添加CBAttribute

已添加CBAttribute.UUID

CBCharacteristic.h

已删除CBCharacteristic.UUID

已修改CBCharacteristic

超类:

从NSObject到CBAttribute


许多其他基本的CoreBluetooth类(包含UUID)也采用了此更改。

然而,CBCharacteristic的类引用仍然称其继承自NSObject。

因此这是误导性的,开发人员可能会把UUID看作是在iOS8中弃用的属性。


2
非常感谢你的解释!在很多情况下,苹果公司的文档都很模糊或有歧义... - Lukasz Czerwinski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接