Неявное преобразование указателя Objective-C в 'void *' запрещено ARC
Что это значит и какая у меня альтернатива?
implicit conversion of an Objective-C pointer to 'void *' is disallowed with ARC
Я переношу проект Xcode3 в iOS5, который использует AudioSessionInitialize, подобный этому
AudioSessionInitialize(NULL, NULL, NULL, self);
где self
здесь находится ViewController.
Ответы
Ответ 1
Вы больше не можете делать неявные приведения в void*
, AudioSessionInitialize(NULL, NULL, NULL, objc_unretainedPointer(self));
должен делать трюк.
EDIT:
Историческая точка, ответ выше был до того, как кавычки __bridge
были завершены. В современном коде правильный ответ таков: @Казуки Сакамото, AudioSessionInitialize(NULL, NULL, NULL, (__bridge void*)self);
Ответ 2
Вы должны использовать __bridge cast для него.
AudioSessionInitialize(NULL, NULL, NULL, (__bridge void *)self);