32 votes

la conversion implicite d'un pointeur Objective-C en 'void *' est interdite avec ARC

Qu'est-ce que cela signifie et quelle alternative ai-je?

 implicit conversion of an Objective-C pointer to 'void *' is disallowed with ARC
 

Je porte un projet Xcode3 sur iOS5 qui utilise AudioSessionInitialize comme ceci

 AudioSessionInitialize(NULL, NULL, NULL, self);
 

self ici est un ViewController.

50voto

Kazuki Sakamoto Points 10100

Vous devriez utiliser __bridge cast pour cela.

 AudioSessionInitialize(NULL, NULL, NULL, (__bridge void *)self);
 

30voto

Joshua Weinberg Points 22701

Vous ne pouvez plus faire de conversions implicites vers void* , AudioSessionInitialize(NULL, NULL, NULL, objc_unretainedPointer(self)); devrait faire l'affaire.

EDIT: Point historique, la réponse ci-dessus était antérieure à la finalisation des conversions __bridge . Dans le code moderne, la réponse correcte est celle fournie par @KazukiSakamoto, AudioSessionInitialize(NULL, NULL, NULL, (__bridge void*)self);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X