Je suis en train d'utiliser retrievePeripheral de CoreBluetooth:ios: NSArray de CFUUIDRef
- (void)retrievePeripherals:(NSArray *)peripheralUUIDs;
La documentation dit peripheralUUIDs devrait être un NSArray de CFUUIDRef. Dans l'exemple d'Apple projet temperatureSensor, il est appelé comme:
[centralManager retrievePeripherals:[NSArray arrayWithObject:(id)uuid]];
(UUID étant un CFUUIDRef) Lorsque j'utilise exactement le même code dans Xcode 4.5.1, iOS 6, je suis une erreur obtenir:
Cast de type pointeur C 'CFUUIDRef' (alias '__CFUUID struct const *) type de pointeur Objective-C 'id' nécessite un ponté jeté
Je dirais (bien que je suis loin d'être bien sûr) que la raison pour laquelle cela fonctionne dans TemperatureSensor et pas dans mon projet est parce que TemperatureSensor ne semble pas utiliser ARC alors que mon projet le fait.
Xcode propose 2 façons de résoudre le problème: l'ajout d'un __bridge
ou en utilisant CFBridgingRelease().
je les ai essayé les deux et je suis sous l'impression que la fonction ne fonctionne pas [Modifier] parce que le délégué Methode didRetrievePeripheral: ne sera jamais appelé [/ Edit] (d'après ce que je comprends, ces opérations changeraient les structures de style C en objectifs C, créant ainsi un NSUUID
, et la méthode ne peut pas l'utiliser, mais, encore une fois je ne suis pas sûr)
Donc qu'est ce que je devrais faire ? J'ai cherché sur google pour des exemples de retrievePeripherals utilisant ARC, mais sans succès.
Qu'est-ce qui vous fait penser que cela ne fonctionne pas? Tout a été comblé avant donc la sémantique n'a pas changé, c'était juste plus automatique que maintenant. – borrrden
On dirait que ça ne marche pas parce que la méthode didRetrievePeripheral: delegate n'est jamais appelée ... (mais peut-être que mon diagnostic est faux) –
(il s'avère que c'était faux en effet) –