使用ARC不允许将Objective-C指针隐式转换为'void *'

时间:2011-07-29 02:46:58

标签: objective-c core-audio automatic-ref-counting

这意味着什么,我有什么选择?

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

我正在将一个Xcode3项目移植到iOS5,它使用AudioSessionInitialize这样

AudioSessionInitialize(NULL, NULL, NULL, self);

其中self这里是ViewController。

2 个答案:

答案 0 :(得分:50)

你应该使用__bridge演员。

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

答案 1 :(得分:30)

你不能再对void*进行隐式强制转换,AudioSessionInitialize(NULL, NULL, NULL, objc_unretainedPointer(self));应该这样做。

编辑: 历史一点,上面的答案是在__bridge演员表最终确定之前。在现代代码中,正确的答案是@KazukiSakamoto提供的AudioSessionInitialize(NULL, NULL, NULL, (__bridge void*)self);