AVAudioPlayer不加载声音

use*_*946 2 iphone objective-c avfoundation ipad ios

无论出于何种原因,我都无法加载声音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];
Run Code Online (Sandbox Code Playgroud)

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

因此看起来AVAudioPlayer代码似乎有点起作用.

关于最新情况以及如何简单地播放音频的任何想法?

Ale*_*hol 11

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

@interface MyViewController : UIViewController {
    AVAudioPlayer *theAudio;
    ...
}
...
@end
Run Code Online (Sandbox Code Playgroud)

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