ios - 将音频单元代码转换为 ARC

标签 ios xcode4.2 automatic-ref-counting core-audio

抱歉,如果这太含糊了......这是我在这里的第一篇文章,我真的很困惑这个问题!

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

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

callbackStruct.inputProcRefCon = self;

[错误] 从不兼容的类型“AUProcessor *const __strong”分配给“void *”。

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

在引用类的方式方面,我在代码的其他地方看不到任何与 ARC 之前的版本有显着不同的地方。

如果需要更多上下文,请告诉我。

提前致谢!

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

最佳答案

通常,(__bridge void*) 在这里是正确的转换。这意味着“在不应用任何内存管理的情况下获取指向该对象的指针;我保证只要需要它,我就会一直保留它。” (最后一部分只是隐含的,但如果你不这样做,你就会崩溃。)

你确定 self 会在这个音频单元存在的时间里继续存在吗?如果没有对 self 的强引用,那么它将消失并且 inputProcRefCon 将成为一个悬空指针。

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

关于ios - 将音频单元代码转换为 ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472016/

相关文章:

ios - 如何有效地填充我的 imageViews 而不会因错误 : Array index out of range 而崩溃

cocoa - 使用 ARC 在 Xcode 4 (OSX 10.7.2) 中将 Cocoa 窗口显示为工作表

objective-c - 为所有栏设置导航栏背景图片

ios - 导航弧内存未释放

ios - 将部署目标从8.0更改为7.1,作为下一个更新?

ios - 隐藏和取消隐藏选项卡栏时管理 View 框架

ios - 如果不存在,如何添加 NSLinguisticTagger Scheme

ios5 - 将 Settings.bundle 添加到 iPhone 应用程序

xcode - 为什么内联汇编不能与 Xcode 中的 ARC 一起使用?

objective-c - 使用 ARC 的 AudioServicesPlaySystemSound 中的内存泄漏