私はAVAudioPlayerを使用してiPhoneゲームでサウンドエフェクトを再生しています。 これは私のコードの一部です:それはユーザーとの対話に基づいて果たしているので、非常に頻繁に繰り返し再生することができAVAudioPlayerがアプリケーション全体をハング
AVAudioPlayer *player = [dict objectForKey:@"Player"];
if (player.playing) {
player.currentTime = 0;
} else {
[player play];
}
一つの音。ユーザーが指を動かすと、このコードを繰り返し呼び出します。
あなたは、そのアプリケーションがハングを行うと、これは私がクラッシュログに乗るエラーの場合:
0 libSystem.B.dylib 0x3146bb18 semaphore_timedwait_signal_trap + 8
1 libSystem.B.dylib 0x3146297c semaphore_timedwait_signal + 8
2 libSystem.B.dylib 0x3145f0fe _pthread_cond_wait + 898
3 libSystem.B.dylib 0x3145f25a pthread_cond_timedwait_relative_np + 10
4 AudioToolbox 0x348ddd50 CAGuard::WaitFor(unsigned long long) + 116
5 AudioToolbox 0x3491b94c ClientAudioQueue::ServicePendingCallbacks() + 232
6 AudioToolbox 0x3491ba60 AudioQueueReset + 44
7 AVFoundation 0x34d16668 -[AVAudioPlayer setCurrentTime:] + 444
これはAVAudioPlayer内部のロックの問題のように私には見えます、と私はすることができていませんそれを解決する。私はさまざまなサウンドフォーマット(CAFFとIMA4)で試してみましたが、どちらも同じ方法で失敗します。
任意のポインタ? AVAudioPlayerはAudio Queuesよりもはるかに簡単なので、私は本当にAVAudioPlayerに固執したいと思っていますが、再生するサウンドとアプリケーションをクラッシュさせないサウンドが必要です。