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

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


You should use __bridge cast for it.

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


You can't do implicit casts to void* anymore, AudioSessionInitialize(NULL, NULL, NULL, objc_unretainedPointer(self)); should do the trick.

EDIT:Historical point, the answer above was from before the __bridge casts were finalized. In modern code the correct answer is that provided by @KazukiSakamoto, AudioSessionInitialize(NULL, NULL, NULL, (__bridge void*)self);