我正在尝试使用 CoreBluetooth 的 retrievePeripheral :
- (void)retrievePeripherals:(NSArray *)peripheralUUIDs;
文档说 peripheralUUIDs 应该是 CFUUIDRef 的 NSArray。在 Apple 示例项目 temperatureSensor 中,它被称为:
[centralManager retrievePeripherals:[NSArray arrayWithObject:(id)uuid]];
(uuid 是 CFUUIDRef)当我在 XCode 4.5.1、IOS6 中使用完全相同的代码时,出现错误:
将 C 指针类型“CFUUIDRef”(又名“const struct __CFUUID *”)转换为 Objective-C 指针类型“id”需要桥接转换
我会说(尽管我不确定)它在 TemperatureSensor 而不是在我的项目中工作的原因是因为 TemperatureSensor 似乎不使用 ARC 而我的项目使用。
Xcode 建议了 2 种解决问题的方法:添加__bridge
或使用CFBridgingRelease().
我都尝试过,但我的印象是该功能不起作用 [Edit] 因为委托方法 didRetrievePeripheral: never 被调用 [/Edit] (我的理解是这些操作会将 C 风格的结构更改为目标 C 对象,从而创建 a NSUUID
,并且该方法不能使用它,但是,我真的不确定)
所以我该怎么做 ?我一直在谷歌上搜索使用 ARC 的retrievePeripherals 示例,但没有成功。