web-dev-qa-db-ja.com

Objective-Cポインターの 'void *'への暗黙的な変換は、ARCでは許可されていません

これは何を意味し、どのような選択肢がありますか?

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

このようにAudioSessionInitializeを使用するXcode3プロジェクトをiOS5に移植しています

AudioSessionInitialize(NULL, NULL, NULL, self);

ここで、selfはViewControllerです。

32
Ali

_void*_への暗黙のキャストを行うことはもうできません。AudioSessionInitialize(NULL, NULL, NULL, objc_unretainedPointer(self));がうまくいくはずです。

編集:歴史的なポイント、上の答えは___bridge_キャストが確定する前からでした。最近のコードでは、正しい答えは@KazukiSakamotoによって提供されたものですAudioSessionInitialize(NULL, NULL, NULL, (__bridge void*)self);

30
Joshua Weinberg

これには__bridgeキャストを使用する必要があります。

AudioSessionInitialize(NULL, NULL, NULL, (__bridge void *)self);
50
Kazuki Sakamoto