2

我一直在研究Learning Core Audio书中的示例。这本书很好地解释了 API 及其工作原理,但并没有真正讨论如何将它们集成到 Cocoa 项目中。

我真的不确定如何将核心音频/midi 编程与 obj-c 类混合。有没有很好的教程来解释这样做的标准做法?

在这一点上,我想到的一些问题是:

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

2 回答 2

5

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

于 2013-03-06T23:32:56.043 回答
1

C 是 Objective C 的一个适当的子集。所以你可以只使用 C 数据类型和调用约定来将 Core 音频与 Cocoa 集成。C 源代码可以放在单独的 .c 文件中,也可以放在 Objective C 实现中。Objective C 对象可以被视为指向 C 回调中的 C 结构的指针。

此外,不建议在实时 Core Audio 回调中使用 Objective C 消息传递。

于 2013-03-07T22:51:12.100 回答