0

我正在编写一个有两个视图控制器的程序。一个视图控制器配置通过 remoteIO audioUnit 播放的声音。另一个视图控制器从麦克风接收音频,处理该音频并显示与从麦克风接收的声音相关的信息。两个视图控制器都需要使用相同的音频图。我使用 Apple 的 AurioTouch2 示例来指导我的代码,但是该程序将大部分代码放在应用程序委托(和一个帮助程序类)中,包括设置音频图和传入和传出音频的回调。这似乎在应用程序委托中放置了不必要的代码。构建我的应用程序的最佳实践是什么?音频单元应该设置在哪里?将音频发送到音频单元的回调应该在哪里?接收到的音频应该在哪里回调?

4

1 回答 1

1

由于 iOS 应用程序只有一个 RemoteIO 音频单元可用,因此单例控制器对象可能是集中定位与该音频单元相关的所有代码的好地方。应用程序委托加上可能的帮助对象或类的组合可以在小型简单应用程序中充当此单例控制器的代理。但在较大的应用程序中,使用单独的音频控制器类可能会更好。某种模型类可能适合封装任何音频状态数据(波形数据等)

对音频控制器对象或数据模型对象的引用可以传递给需要控制或访问音频的任何其他视图控制器。这将适合组合光(UIViews)和声音(音频单元)的 MVC 模式。

请注意,音频单元 API 是一个 C API,因此使用全局可见的 C 子例程和状态也是可能的(例如,一些不与任何类关联的 .c 文件)。

于 2012-12-21T17:35:05.533 回答