0

私は2つのViewControllerを持つプログラムを書いています。1つのViewControllerは、remoteIOaudioUnitを介して再生されるサウンドを構成します。もう一方のビューコントローラは、マイクからオーディオを受信し、そのオーディオを処理して、マイクから受信したサウンドに関連する情報を表示します。両方のビューコントローラは、同じオーディオグラフで動作する必要があります。私はAppleのAurioTouch2の例を使用してコードをガイドしましたが、そのプログラムは、オーディオグラフの設定や着信および発信オーディオのコールバックなど、コードの多くをアプリケーションデリゲート(およびヘルパークラス)に配置します。これにより、必要以上に多くのコードがアプリケーションデリゲートに配置されるようです。アプリケーションを構造化するためのベストプラクティスは何ですか?オーディオユニットはどこに設置すればよいですか?オーディオユニットにオーディオを送信するためのコールバックはどこにあるべきですか?受信したオーディオのコールバックはどこにあるべきですか?

4

1 に答える 1

1

iOSアプリで使用できるRemoteIOオーディオユニットは1つしかないため、シングルトンコントローラーオブジェクトは、そのオーディオユニットに関連するすべてのコードを一元的に見つけるのに適した場所である可能性があります。アプリデリゲートと、場合によってはヘルパーオブジェクトまたはクラスの組み合わせは、小さなシンプルなアプリでこのシングルトンコントローラーの代理として機能します。ただし、大規模なアプリでは、別のオーディオコントローラークラスを使用する方がよい場合があります。ある種のModelクラスは、オーディオ状態データ(波形データなど)をカプセル化するのに適している場合があります。

オーディオコントローラオブジェクトまたはデータモデルオブジェクトへの参照は、オーディオを制御またはアクセスする必要がある他の任意のViewControllerに渡すことができます。これは、光(UIView)と音(オーディオユニット)を組み合わせたMVCパターンに適合します。

Audio UnitAPIはCAPIであるため、グローバルに表示されるCサブルーチンと状態を使用することも可能であることに注意してください(たとえば、どのクラスにも関連付けられていない一部の.cファイル)。

于 2012-12-21T17:35:05.533 に答える