开发者

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

开发者 https://www.devze.com 2023-03-24 05:10 出处:网络
What does this mean and what alternative do I have? implicit conversion of an Objective-C pointer to \'void *\' is disallowed with ARC

What does this mean and what alternative do I have?

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

I am porting an Xcode3 project to iOS5 which uses AudioSessionInitialize like this

AudioSessionInitialize(NULL, NULL, NULL, self);
开发者_开发百科

where self here is a ViewController.


  • Automatic Reference Counting - 3.2.4. Bridged casts

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);

0

精彩评论

暂无评论...
验证码 换一张
取 消