2012-01-02 238 views
2

无论出于何种原因,我无法通过AVAudioPlayer加载声音。我正在iPad设备上测试它。AVAudioPlayer无法加载声音

我的代码相当直接,没有什么奇特的。该框架是导入的,委托实施。在我viewDidLoad方法:

NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"]; 
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] 
          initWithContentsOfURL:[NSURL fileURLWithPath:path] 
              error:NULL]; 
[theAudio setDelegate:self]; 
[theAudio prepareToPlay]; 
[theAudio play]; 

这不能播放音频。但巧合的是,当我立即显示UIAlertView时,我可以听到音频片段播放的前2秒。也就是说,我的应用程序加载时,我听到两秒钟的音频,然后弹出警报并切断音频。

所以它会出现AVAudioPlayer有点似乎工作的代码。

关于正在发生的事情以及我如何简单地获取音频的任何想法?

回答

11

问题是您正在使用ARC,因此当变量超出范围时AVAudioPlayer会被释放。您必须声明theAudio变量作为实例变量,并将其分配到viewDidLoad中。所以,在您的.h文件中:

@interface MyViewController : UIViewController { 
    AVAudioPlayer *theAudio; 
    ... 
} 
... 
@end 

然后,摆脱AVAudioPlayer *从那里你在viewDidLoad中分配theAudio行。这会使您的视图控制器保留音频播放器,从而阻止播放器在播放前被释放。