Ios 如何修复线程1:EXC\u BAD\u访问(代码=1,地址=0x58)xcode
我试图用按钮播放一些声音文件,但按下按钮会在第1行出现以下错误线程:EXC_BAD_ACCESS(code=1,address=0x58) 我已经寻找了可能的解决方案,但我找不到与该错误相关的任何东西,我的代码的功能在打印之前运行良好,这是我的完整代码Ios 如何修复线程1:EXC\u BAD\u访问(代码=1,地址=0x58)xcode,ios,swift,avaudioplayer,Ios,Swift,Avaudioplayer,我试图用按钮播放一些声音文件,但按下按钮会在第1行出现以下错误线程:EXC_BAD_ACCESS(code=1,address=0x58) 我已经寻找了可能的解决方案,但我找不到与该错误相关的任何东西,我的代码的功能在打印之前运行良好,这是我的完整代码 import UIKit import AVFoundation class ViewController: UIViewController { var track: String? = nil var audioPlaye
import UIKit
import AVFoundation
class ViewController: UIViewController {
var track: String? = nil
var audioPlayer = AVAudioPlayer()
@IBAction func heavyButton(_ sender: Any) {
track = "H"
print("heavy machine gun \(track!)")
reproducirAudio(audio: track!)
audioPlayer.play()
}
func reproducirAudio(audio: String) {
do {
print("entro a la funcion de reproducir")
audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: audio, ofType: "mp3")!))
audioPlayer.prepareToPlay()
} catch {
print(error)
}
}
}
我找到了一个解决方案,这是针对iOS13的
import UIKit
import AVFoundation
class ViewController: UIViewController {
var track: String? = nil
var audioPlayer: AVAudioPlayer?
@IBAction func heavyButton(_ sender: Any) {
track = "H"
print("heavy machine gun \(track!)")
reproducirAudio(audio: track!)
}
func reproducirAudio(audio: String) {
let path = Bundle.main.path(forResource: "\(audio).mp3", ofType:nil)!
let url = URL(fileURLWithPath: path)
do {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.play()
} catch {
// couldn't load file :(
}
}
你确定
reproductiraudio
能够构建AVAudioPlayer
实例吗?你说的是Bundle.main.path(forResource:audio,of type:“mp3”)代码>。这意味着:“如果你找不到文件,请崩溃我的程序。”这就是你要求的,这就是正在发生的事情。请注意,发生这种情况时,您不会捕获错误;这是一个例外,不是一个错误。两个潜在的错误:如果URL.init(fileURLWithPath:Bundle.main.path(forResource:audio,of type:“mp3”)
为零,您将崩溃。但iOS 13中还有一个新行为:不做var audioPlayer=AVAudioPlayer()
。doc.Cf.等中不再有“无参数的init”。
import UIKit
import AVFoundation
class ViewController: UIViewController {
var track: String? = nil
var audioPlayer: AVAudioPlayer?
@IBAction func heavyButton(_ sender: Any) {
track = "H"
print("heavy machine gun \(track!)")
reproducirAudio(audio: track!)
}
func reproducirAudio(audio: String) {
let path = Bundle.main.path(forResource: "\(audio).mp3", ofType:nil)!
let url = URL(fileURLWithPath: path)
do {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.play()
} catch {
// couldn't load file :(
}
}