gpt4 book ai didi

ios - 按下按钮时,Thread1 :EXC_BAD_ACCESS(code=1, 地址 = 0X48)

转载 作者:行者123 更新时间:2023-12-01 23:34:11 25 4
gpt4 key购买 nike

var buttonTapPlayer = AVAudioPlayer()


override func viewDidLoad() {
super.viewDidLoad()

DispatchQueue.global(qos: .background).async {
do{
let correctSoundUrl: URL = URL(fileURLWithPath: Bundle.main.path(forResource: "buttonTap", ofType: "wav")!)
self.buttonTapPlayer = try AVAudioPlayer(contentsOf: correctSoundUrl)
self.buttonTapPlayer.prepareToPlay()
}
catch{}
}
}


@IBAction func buttonPressed(_ sender: UIButton) {

self.buttonTapPlayer.play()
performSegue(withIdentifier: "showDetail", sender: sender)

}

我的 swift 项目中有上面的代码。当我第一次在模拟器中运行项目时,我的项目崩溃了 self.buttonTapPlayer.play()出现以下错误:

Thread1:EXC_BAD_ACCESS(code=1, address = 0X48)

但是,当我重新运行它时,一切都很好。我该如何解决这个问题?

最佳答案

你做不到。您已在后台线程中构建了 buttonTapPlayer,并尝试从主线程调用它(到 IBAction 方法)。由于您的播放器尚未准备好,编译器崩溃到 play()

为了避免这种情况,您可以在内部构建播放器:

DispatchQueue.main.async {
// build your stuff to the main thread
}

或者直接删除 DispatchQueue.global(qos: .background).async {}

关于ios - 按下按钮时,Thread1 :EXC_BAD_ACCESS(code=1, 地址 = 0X48),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40326486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com