неявное преобразование указателя Objective C в 'void *' запрещено с ARC - PullRequest
32 голосов
/ 29 июля 2011

Что это значит и какая у меня альтернатива?

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

Я портирую проект Xcode3 на iOS5, который использует AudioSessionInitialize следующим образом

AudioSessionInitialize(NULL, NULL, NULL, self);

где self здесьявляется ViewController

Ответы [ 2 ]

50 голосов
/ 23 августа 2011

Вы должны использовать для этого __bridge.

AudioSessionInitialize(NULL, NULL, NULL, (__bridge void *)self);
30 голосов
/ 29 июля 2011

Вы не можете больше делать неявные приведения к void*, AudioSessionInitialize(NULL, NULL, NULL, objc_unretainedPointer(self)); должен сделать свое дело.

РЕДАКТИРОВАТЬ: Исторический момент, ответ выше был до того, как приведения __bridge были завершены.В современном коде правильный ответ таков: @KazukiSakamoto, AudioSessionInitialize(NULL, NULL, NULL, (__bridge void*)self);

...