如何修复线程 1:EXC_BAD_ACCESS (code=1, address=0x58) xcode

Posted

技术标签:

【中文标题】如何修复线程 1:EXC_BAD_ACCESS (code=1, address=0x58) xcode【英文标题】:How to fix Thread 1: EXC_BAD_ACCESS (code=1, address=0x58) xcode 【发布时间】:2019-10-20 13:17:00 【问题描述】:

我正在尝试使用按钮播放一些声音文件,但按下按钮会引发此错误 Thread 1: EXC_BAD_ACCESS (code=1, address=0x58) on line

audioPlayer.play()

我已经寻找可能的解决方案,但找不到与该错误相关的任何内容,我的代码功能在打印之前运行良好,这是我的完整代码。

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)
        
    

【问题讨论】:

你确定reproducirAudio 能够构造AVAudioPlayer 实例吗? 你说的是Bundle.main.path(forResource: audio, ofType: "mp3")!。这意味着:“如果找不到文件,请让我的程序崩溃。”这就是你所要求的,这就是正在发生的事情。请注意,当这种情况发生时,您将不会捕获错误;这是一个例外,而不是错误。 两个潜在错误:如果URL.init(fileURLWithPath: Bundle.main.path(forResource: audio, ofType: "mp3") 为nil,您将崩溃。但在 ios 13 中还有一个新行为:不要做var audioPlayer = AVAudioPlayer()。文档中不再有“没有参数的初始化”。 参见。 ***.com/questions/58166133/…***.com/questions/58110827/…等 【参考方案1】:

我找到了解决方案,这是针对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 :(
      

【讨论】:

以上是关于如何修复线程 1:EXC_BAD_ACCESS (code=1, address=0x58) xcode的主要内容,如果未能解决你的问题,请参考以下文章

我该如何解决这个 EXC_BAD_ACCESS(代码=1 地址=0x0bbadbeef)

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c)

崩溃:iOS 中的 AVAudioSession 通知线程

崩溃:“线程 1:EXC_BAD_ACCESS”?

收到“线程 1:EXC_BAD_ACCESS”错误?

线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)错误