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

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

【问题讨论】:

标签: avaudioplayer


【解决方案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];
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多