2010-08-03 36 views
1

我正在開發一個應用程序,它涉及重複點擊一個按鈕,並且我將爲此點擊(點擊波形文件)提供音頻反饋。AVAudioPlayer在248次後無法工作

它工作正常,但我有一個問題,正好248次後,聲音不再播放,但應用程序不會崩潰。我得到以下錯誤:「操作無法完成(NSOSStatusErrorDomain錯誤-43)」

錯誤域= NSOSStatusErrorDomain代碼= -43

這裏是我的代碼(相當標準)

//file.h 
AVAudioPlayer *audioPlayer; 


//file.m 
    NSString *path=[[NSBundle mainBundle] pathForResource:@"click" ofType:@"wav"]; 

     [audioPlayer stop]; //I added this in one of my trials to solve it. 
     audioPlayer= [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&err]; 
     audioPlayer.numberOfLoops=0; 
     audioPlayer.delegate=self; 
      [audioPlayer prepareToPlay]; 



     if (audioPlayer==nil) 
      NSLog(@"%@, %@",path,[err description]); 
     else 
     [audioPlayer play]; 

任何想法爲什麼會發生這種情況?

+0

創建一個大小和長度加倍的聲音文件(也許使用音頻工具來加倍你現有的剪輯)和實驗。 124次後發生問題了嗎?另外,你的目標iOS版本是什麼?你安裝了哪些SDK?你正在測試什麼設備? – 2010-08-03 23:03:52

回答

4

我只見過與流音頻關聯的錯誤消息。可能是奇怪的事情發生在NSURL或...

您的代碼的其他問題:您何時發佈audioPlayer對象?如果你不是,你分配了很多對象,並且從不從內存中釋放它們。這可能最終導致內存消息較少。

另外一個問題:使用編碼*在一次

最後播放多種聲音文件的.caf,我已經發布,從另一個問題的樣本項目,該項目可能會顯示使用AVAudioPlayer一個更好的辦法的IMA4 Apple recommends ...查看這篇文章what is the best way to play sound quickly upon fast button presses xcode?

+1

你是對的,我沒有正確地放音器,而且我沒有注意到,但是在你指出這一點之後,我再次檢查了我的代碼,然後我修復了它。 現在它工作,謝謝。 – Tamer 2010-08-03 23:22:32