AVAudioPlayer EXC_BAD_ACCESS

时间:2011-10-06 04:58:11

标签: avaudioplayer

我正在尝试暂停AVAudioPlayer如果它正在播放。当我调试我的代码并检查AVAudioPlayer时,我看到它被分配了。当我尝试访问其上的方法/属性(即myAudioPlayer isPlaying)时,出现EXC_BAD_ACCESS错误。如果AVAudioPlayer没有加载声音,则会发生这种情况。有没有办法可以检查它是否加载了声音?我尝试访问myAudioPlayer.data,但我仍然遇到同样的错误。

4 个答案:

答案 0 :(得分:5)

对我来说,这是因为我没有打电话给指定的初始者之一。我使用AVAudioPlayer()而不是public init(contentsOfURL url: NSURL) throwspublic init(data: NSData) throws

指定的初始值来实例化它

答案 1 :(得分:5)

从iOS 13开始,请确保在使用AVAudioPlayer(contentsOf:URL(...))进行赋值之前,先删除AVAudioPlayer上的初始化

即更改 var audioPlayer = AudioPlayer()var audioPlayer: AVAudioPlayer!

答案 2 :(得分:3)

我猜你必须使用prepareToPlay方法来查找它是否已加载。

答案 3 :(得分:0)

首先你需要添加AVFoundation Framework。然后,在.h文件中导入AVFounadtion框架。

·H:

 AVAudioPlayer *audioPlayer;

的.m:

    NSURL *url1 = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audio1.mp3", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url1 error:&error];
    //audioPlayer.numberOfLoops = 0;

        [audioPlayer play];

试试这段代码可能对你有帮助..