2013-03-09 96 views
0

我試圖找出原因的聲音沒有在我的應用程序打,所以我創造了什麼,我認爲是儘可能簡單的實現:AVAudioPlayer:簡單的聲音不玩

NSError *error; 
    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"canary-trills" ofType:@"wav"]; 
    NSLog(@"string=%@", soundFilePath); 
    NSURL *url = [[NSURL alloc] initFileURLWithPath:soundFilePath]; 
    NSLog(@"URL=%@", url); 
    AVAudioPlayer *avPlayer = [[AVAudioPlayer alloc] 
          initWithContentsOfURL:url error:&error]; 
    [avPlayer prepareToPlay]; 
    BOOL success = [avPlayer play]; 
    NSLog(@"The sound %@ play", success ? @"did" : @"didn't"); 

每控制檯,它看起來像找到資源,正確地創建URL。即使是播放電話也表示成功。但是,在模擬器和設備中沒有聲音播放。

+0

這是一個既定的事實,它只是因爲一些愚蠢的原因而不能在模擬器中工作。 – Linuxios 2013-03-09 18:31:09

+0

以及通過傳入「'AVAudioPlayer」中的「'error'」參數返回什麼樣的錯誤? – 2013-03-09 18:38:20

+0

NSLog(@「NSError =%@」,錯誤);打印NSError =(null) – Bill 2013-03-09 18:43:41

回答

2

AVAudioPlayer沒有被保留&正在超出範圍。

添加: @property(強,非原子)AVAudioPlayer * audioPlayer;

到類&使用該成員解決了問題。

+0

該死的。遲到1分鐘。順便說一句,正確的答案。 – duci9y 2013-03-09 19:00:20