2013-03-09 31 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