点击按钮播放音频时触发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
相关产品推荐
相关产品推荐

