我正在使用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,因爲它比音頻隊列簡單得多,但我需要播放聲音而不會使應用程序崩潰。