将音频单元代码转换为ARC

Spi*_*oxa 3 core-audio ios xcode4.2 automatic-ref-counting

抱歉,如果这太模糊了......这是我在这里发表的第一篇文章,我对这个问题感到很满意!

我一直在尝试使用Audio Units将iOS Xcode项目转换为ARC,但它似乎打破了音频单元处理类的功能.一些症状......当我尝试在AUProcessor.mm中引用'self'时,AUProcessor类被称为'const*',而在ARC之前的版本中,没有提到'const*'.

这个指向'self'的指针会产生以下错误:

callbackStruct.inputProcRefCon = self;

[error] Assigning to 'void *' from incompatible type 'AUProcessor *const __strong'.

我可以通过在self之前添加(__bridge void*)来删除错误,这允许项目进行编译.但是,音频单元处理器在应用程序中不起作用.

在类的引用方面,我在代码中看不到与ARC之前版本明显不同的任何其他内容.

如果需要更多背景,请告诉我.

提前致谢!!

(顺便说一句,感谢所有这些论坛的贡献者......对于热衷但缺乏经验的程序员来说,他们真的是一个很好的资源!)

Rob*_*ier 9

通常情况下,(__bridge void*)这将是正确的演员.这意味着"在不应用任何内存管理的情况下获取指向此对象的指针;我保证只要需要它就会保留它." (最后一部分只是暗示,但如果你不这样做,你就会崩溃.)

您确定self只要这个音频单元继续存在吗?如果没有任何强烈的引用self,那么它将消失inputProcRefCon并将成为一个悬垂的指针.

当你说"在应用程序中不起作用"时,你的意思是什么?它崩溃了吗?回调不会发生吗?当回调发生时,它没有正确的数据吗?