1

iOS アプリ プロジェクトには、(さまざまなプロパティ、コールバックなどを設定した後) で終わるオーディオ ユニット (入力/出力に使用される) 初期化コードがあります。

OSErr err = AudioUnitInitialize (self.audioUnit);
NSAssert1 (err == noErr, "Error initializing audio unit: %ld", err);

私の問題は、状況によっては、オーディオ ハードウェアを使用できないコンピューター (もちろん iPhone シミュレーター) でこのコードを実行する必要があることです。その後、次のことが起こります。

まず、コンソールに次のメッセージが表示されます (長い行で申し訳ありません。余分な改行がない方がわかりやすいようです)。

2012-05-03 12:41:15.020 TimeKeeper[452:10703] Error loading /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn:  dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 262): Symbol not found: ___CFObjCIsCollectable
  Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
 in /System/Library/Frameworks/Security.framework/Versions/A/Security
2012-05-03 12:41:15.140 TimeKeeper[452:10703] Error loading /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn:  dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 262): Symbol not found: ___CFObjCIsCollectable
  Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
 in /System/Library/Frameworks/Security.framework/Versions/A/Security
2012-05-03 12:41:15.207 TimeKeeper[452:10703] Error '!obj' trying to fetch default input device's sample rate
2012-05-03 12:41:15.209 TimeKeeper[452:10703] Error getting audio input device sample rate: '!obj'

その後、約 2 分ほど経過するAudioUnitInitializeと、エラー コード0(例noErr: ) が返され、コンソールに次のメッセージが表示されます。

2012-05-03 12:43:45.222 TimeKeeper[452:14403] AQMEIO_Base::DoStartIO: timeout
2012-05-03 12:43:45.226 TimeKeeper[452:14403] AQMEDevice(0x7b0de00)::StartIO: error -66681

次に を呼び出すAudioOutputUnitStartと、関数が戻るまでに約 2 分かかりますが、少なくとも戻りステータスはゼロではありません。

オーディオ ハードウェアが利用できないかどうかを確認できるようにしたいので、AudioUnitInitializeそもそも呼び出しを避けることができます --- または、少なくとも (アプリの実行中) それほど長く待たずにゼロ以外の戻りステータスを取得できます。時間条件)。

4

1 に答える 1

1

シミュレートされた iOS コードの実行をいつでもチェックして、別のことを行うことができます。

#if TARGET_IPHONE_SIMULATOR
    // stub out audio unit with a unit test, unix pipe, or etc.
#endif
于 2012-05-03T20:46:38.667 に答える