在Cocoa类中使用Core Audio

tom*_*990 2 macos cocoa objective-c core-audio coremidi

我一直在研究学习核心音频书中的例子.本书很好地解释了API及其工作原理,但并没有真正讨论如何将它们集成到Cocoa项目中.

我真的不确定如何将核心音频/ midi编程与obj-c类混合.是否有任何好的教程可以解释这样做的标准做法?

目前我脑海中的一些问题是:

  • 如果我需要一个userdata结构,我可以用某种obj-c实例变量或@properties替换它,或者这必须是一个C结构吗?
  • 我应该在哪里将音频回调函数放在我的代码中?他们可以坐在@implementation之外的某个地方吗?
  • 由于回调函数是用C语言编写的,如果我想调用objective-C函数或访问其中的类属性,我该怎么办?

小智 5

通常的做法是将类实例作为userdata传递,如果回调将其声明为void*.然后,您的回调可以将其转换为对象并调用其中的任何方法.

  • 除了在Core Audio实时线程(例如渲染回调)的回调中,你真的不应该做任何调用Objective-C运行时的事情.您可以使用object-> variable语法直接访问实例变量,只要它们是使用@public声明的. (4认同)