AVAudioPlayer EXC_BAD_ACCESS

Posted

技术标签:

【中文标题】AVAudioPlayer EXC_BAD_ACCESS【英文标题】: 【发布时间】:2011-10-06 04:58:11 【问题描述】:

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

【问题讨论】:

你能贴一些代码吗?我的猜测是您在初始化之前正在访问 AVAudioPlayer。 尝试检查是否初始化正确reddit.com/r/swift/comments/2whoaz/… 【参考方案1】:

对我来说,这是因为我没有调用指定的初始化程序之一。我用AVAudioPlayer() 实例化它,而不是指定的初始化器public init(contentsOfURL url: NSURL) throwspublic init(data: NSData) throws

【讨论】:

【参考方案2】:

ios 13 开始,请确保在使用 AVAudioPlayer(contentsOf: URL(...)) 分配之前删除 AVAudioPlayer 上的初始化

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

【讨论】:

拍得好,这才是真正的问题,使用前的空初始化.. 这就是iOS13!您是如何发现 Reid 解决方案的?【参考方案3】:

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

【讨论】:

【参考方案4】:

首先你必须添加 AVFoundation 框架。然后,在 .h 文件中导入 AVFoundation 框架。

.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];

试试这个代码,它可能对你有帮助..

【讨论】:

以上是关于AVAudioPlayer EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章

斯威夫特:非托管 AVAudioPlayer

声音 AVAudioPlayer 不工作

AVAudioPlayer

iPhone:AVAudioPlayer 是不是支持 .wav 格式?

AVAudioPlayer 行为处理问题

初始化 AVAudioPlayer 以在多个函数中使用