You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮播放音频时触发Unrecognized selector error问题求助

iOS音频播放错误排查与解决

从你提供的代码和错误(Thread 1: EXC_BAD_ACCESS (code=1, address=0x0))来看,主要有以下几个问题需要修复:

1. 修正IBAction参数语法错误

你的按钮点击方法参数写法不符合Swift规范,错误的参数命名会导致调用时的内存异常:

// 错误写法
@IBAction func buttonC(_sender: UIButton) {
    playSound()
}

// 正确写法
@IBAction func buttonC(_ sender: UIButton) {
    playSound()
}

2. 确认音频文件已正确加入项目

EXC_BAD_ACCESS很大概率是因为找不到音频文件,导致后续初始化失败:

  • 检查项目中是否存在C.wav文件,文件名和后缀完全匹配(注意大小写)
  • 选中文件,打开右侧File Inspector,确保Target Membership已勾选当前项目的target
  • 在playSound方法中添加日志排查文件是否存在:
    guard let path = Bundle.main.path(forResource: "C", ofType:"wav") else {
        print("未找到音频文件C.wav")
        return 
    }
    

3. 优化音频播放逻辑

补充音频会话配置,同时确保AVAudioPlayer的生命周期正确:

func playSound() {
    guard let url = Bundle.main.url(forResource: "C", withExtension: "wav") else {
        print("音频文件路径无效")
        return
    }

    do {
        // 配置音频会话,避免与系统音频冲突
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
        try AVAudioSession.sharedInstance().activate()
        
        player = try AVAudioPlayer(contentsOf: url)
        player?.prepareToPlay() // 提前加载音频,提升播放流畅度
        player?.play()
    } catch {
        print("播放错误:\(error.localizedDescription)")
    }
}

4. 额外排查步骤

如果以上操作后仍报错:

  • 检查按钮的IBAction关联是否正确,删除旧关联重新绑定
  • 执行Cmd+Shift+K清理项目缓存,重新编译运行

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:40:25