Iphone AVAudioPlayer不';t负载声音

Iphone AVAudioPlayer不';t负载声音,iphone,objective-c,ios,ipad,avfoundation,Iphone,Objective C,Ios,Ipad,Avfoundation,无论出于何种原因,我都无法使用AVAudioPlayer加载声音。我正在我的iPad设备上测试它 我的代码相当简单,没有什么特别之处。框架被导入,委托被实现。在myviewDidLoad方法中: NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"]; AVAudioPlayer *theAudio = [[AVAudioPlayer alloc]

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

我的代码相当简单,没有什么特别之处。框架被导入,委托被实现。在my
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
代码似乎在某种程度上起作用


你知道怎么回事吗?我怎样才能简单地播放音频?

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

@interface MyViewController : UIViewController {
    AVAudioPlayer *theAudio;
    ...
}
...
@end
然后,从viewDidLoad中分配音频的行中删除
AVAudioPlayer*
。这将导致视图控制器保留音频播放器,从而防止在播放前释放播放器