我正在尝试使用CoreBluetooth的retrievePeripheral:

- (void)retrievePeripherals:(NSArray *)peripheralUUIDs;

该文档说,peripheralUUID应该是CFUUIDRef的NSArray。在Apple示例项目temperatureSensor中,它称为:
[centralManager retrievePeripherals:[NSArray arrayWithObject:(id)uuid]];

(uuid是CFUUIDRef)
当我在XCode 4.5.1(IOS6)中使用完全相同的代码时,出现错误:

将C指针类型'CFUUIDRef'(aka'const struct __CFUUID *')强制转换为Objective-C指针类型'id'需要桥接转换

我会说(尽管我不确定),它在TemperatureSensor中而不是在我的项目中起作用的原因是因为TemperatureSensor似乎不使用ARC,而我的项目却使用了ARC。

Xcode提出了两种解决问题的方法:添加__bridge或使用CFBridgingRelease().我都尝试了这两种方法,但我觉得该函数不起作用[Edit],因为委托方法didRetrievePeripheral:从未被调用[/ Edit](我可以理解的是,这些操作会将C样式的结构更改为 objective-c 对象,从而创建了NSUUID,并且该方法无法使用它,但是,我真的不确定)

所以我该怎么做 ?我一直在Google上搜索使用ARC的restorePeripherals的示例,但没有成功。

最佳答案

在温度传感器中更改此线并运行
LeDiscovery.m

 -(void) startScanningForUUIDString:(NSString *)uuidString
 {
      [centralManager scanForPeripheralsWithServices:nil options:0];
 }

更改单词nil并假定为0。

如果您想要更多,请检查此link

希望对您有用。

关于ios - ios:CFUUIDRef的NSArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13025711/

10-12 01:41