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

将Objective-C指针隐式转换为';void*';不允许使用ARC,objective-c,core-audio,automatic-ref-counting,Objective C,Core Audio,Automatic Ref Counting,这意味着什么?我有什么选择 ARC不允许将Objective-C指针隐式转换为“void*” 我正在将一个Xcode3项目移植到iOS5,它使用AudioSessionInitialize,如下所示 AudioSessionInitialize(NULL, NULL, NULL, self); 其中self这里是一个ViewController。您不能再对void*执行隐式强制转换,AudioSessionInitialize(NULL,NULL,NULL,objc_unrepainedpoi

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

ARC不允许将Objective-C指针隐式转换为“void*”

我正在将一个Xcode3项目移植到iOS5,它使用AudioSessionInitialize,如下所示

AudioSessionInitialize(NULL, NULL, NULL, self);

其中
self
这里是一个ViewController。

您不能再对
void*
执行隐式强制转换,
AudioSessionInitialize(NULL,NULL,NULL,objc_unrepainedpointer(self))应该可以做到这一点

编辑: 从历史的角度来看,上面的答案来自于
\u桥
演员阵容最终确定之前。在现代代码中,正确的答案是@KazukiSakamoto,
AudioSessionInitialize(NULL,NULL,NULL,(u-bridge-void*)self)提供的答案

你应该用桥牌铸造

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

你或@Joshua Weinberg能否评论一下你是否需要一个桥牌演员,或者@Joshua Weinberg的回答(
objc_unrepairedpointer
)是否正确?ARC编译器喜欢建议
\uu桥
objc\u未恢复指针为“\uu属性(cf_返回\u未保留))const void*objc\u未恢复指针(id对象){return object;}”。这两种方法都有相同的效果,但是,至少,_桥有很好的文档记录,而objc_unrepairedpointer没有文档记录。谢谢@Kazuki Sakamoto,这是我第二次回到这个答案,你的评论真的很有帮助。这是正确的答案,我相信我在添加_桥类型之前回答过。