AVAudioPlayer不加载声音

时间:2012-01-02 20:40:53

标签: iphone objective-c ios ipad avfoundation

无论出于何种原因,我在使用AVAudioPlayer加载声音时遇到问题。我正在我的iPad设备上测试它。

我的代码相当直接,没什么特别的。导入框架,实现委托。在我的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代码似乎有点起作用。

有什么想法,我怎么能简单地播放音频?

1 个答案:

答案 0 :(得分:11)

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

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

然后,从viewDidLoad中指定AVAudioPlayer *的行中删除theAudio。这将导致视图控制器保留音频播放器,从而防止播放器在播放前被释放。