无论出于何种原因,我在使用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
代码似乎有点起作用。
有什么想法,我怎么能简单地播放音频?
答案 0 :(得分:11)
问题是您正在使用ARC,因此当变量超出范围时,AVAudioPlayer将被释放。您必须将theAudio
变量声明为实例变量,并在viewDidLoad中指定它。所以,在你的.h文件中:
@interface MyViewController : UIViewController {
AVAudioPlayer *theAudio;
...
}
...
@end
然后,从viewDidLoad中指定AVAudioPlayer *
的行中删除theAudio
。这将导致视图控制器保留音频播放器,从而防止播放器在播放前被释放。