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'(別名'const struct __CFUUID *')からObjective-Cポインター型'id'へのキャストにはブリッジキャストが必要です
私のプロジェクトではなくTemperatureSensorで機能する理由は、TemperatureSensorがARCを使用していないように見えるのに対し、私のプロジェクトでは使用しているためです。
Xcodeは問題を解決する2つの方法を提案します:aを追加する__bridge
か使用CFBridgingRelease().
する両方を試しましたが、デリゲートメソッドdidRetrievePeripheral:決して呼び出されない[/ Edit]のため、関数が機能しないという印象を受けています(私の理解はこれらの操作により、Cスタイルの構造体がobjective-C-objectsに変更され、が作成されNSUUID
、メソッドはそれを使用できませんが、やはりよくわかりません)
だから私は何をすべきですか?ARCを使用したretrievePeripheralsの例をグーグルで検索してきましたが、成功しませんでした。