1

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の例をグーグルで検索してきましたが、成功しませんでした。

4

2 に答える 2

2

温度センサーで、この行を変更して実行します

LeDiscovery.m

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

単語を変更し、nil0 と仮定します。

さらに必要な場合は、このリンクを確認してください。

お役に立てば幸いです。

于 2012-10-23T09:24:52.820 に答える
1

問題はそれよりもはるかに単純だったことがわかりました。TemperatureSensor、特にDidRetrievePeripheralからいくつかのコードをコピーして貼り付けました。しかし、このコード(DidRetrievePeripheralS)にエラーがあるため、デリゲートメソッドが呼び出されることはありません。バグはすでに報告されていると思います。

ありがとう/ごめんなさい

于 2012-10-23T08:42:03.467 に答える