我正在尝试使用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/