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

Posted

技术标签:

【中文标题】线程1:EXC_BAD_ACCESS(代码=1,地址=0x48)avaudiofoundation【英文标题】:Thread 1: EXC_BAD_ACCESS (code=1, address=0x48) avaudiofoundation 【发布时间】:2019-10-09 23:04:35 【问题描述】:

当我尝试运行我的代码时,在我的代码行中的上面的标题中出现错误

audioPlayer = 试试 AVAudioPlayer(contentsOf: url)

在我将 Xcode 更新到 Xcode 11 之前,这段代码就像一个魅力,现在有了 swift 5,我不得不更改它,但现在它不起作用。有人可以帮帮我吗?这是我的代码

import UIKit
import AVFoundation

class ViewController: UIViewController, AVAudioPlayerDelegate 

override func viewDidLoad() 
    super.viewDidLoad()

    playAudio()



@IBAction func playButton(_ sender: Any) 
playAudio()



var indexPath = 0
var listOfTheSongs = ["badLiar.mp3", "cool.mp3", "eastSide.mp3", "fallinAllInYou.mp3", "hateHowMuchILoveYou.mp3", "inMyBlood.mp3", "letMeDownSlowly.mp3", "loveYourself.mp3", "panini.mp3", "rewriteTheStars.mp3", "stiches.mp3", "treatYouBetter.mp3", "wow.mp3"]
 var audioPlayer = AVAudioPlayer()
 var path = Bundle.main.path(forResource: "badLiar.mp3" , ofType: nil , inDirectory: "Songs For Lyric Hunt")!


func playAudio () 

    if path != nil 
        print("path does not equal nil")
        let url = URL(fileURLWithPath: path)
        do 
            audioPlayer = try AVAudioPlayer(contentsOf: url)
            if audioPlayer.isPlaying == true 
            audioPlayer.stop()
             else 
                audioPlayer.play()
            
         catch 
            // couldn't load file :(
            print("counldn't load file :(")
        
    else 
        print(" path equals to nil")

        
    




【问题讨论】:

你检查'url'是否正确初始化?用断点或打印检查。 EXC_BAD_ACCESS 主要是因为试图访问无效内存。 能否请您具体说明如何检查? 只打印("url值:(url)");在“做”打印之前。或者,在 audioPlayer = try AVAudioPlayer(contentsOf: url) 行上放置一个断点,当它在控制台中中断时,“po url”。检查 url 的值是多少。很可能它会是无效的。 打印 url 的结果是“file:///Users/ryan/Library/Developer/CoreSimulator/Devices/541EC05F-C569-4049-8F38-7CA1D919C72C/data/Containers/Bundle/ Application/3C1D3317-946A-4FC0-8285-476A0FA644E7/Lyric%20Hunt.app/Songs%20For%20Lyric%20Hunt/badLiar.mp3",好像无效? 【参考方案1】:

参考这个answer,你需要像下面这样初始化你的AVAudioPlayer:

var audioPlayer: AVAudioPlayer!

用上面的行替换你的var audioPlayer = AVAudioPlayer()

这应该可以解决崩溃问题。似乎问题是从 ios 13.1 发生的

【讨论】:

谢谢。在我格式化我的 Mac 并安装 OSX Catalina 并重新安装更新到 11.1 的 Xcode 后,在运行我的项目时我得到了这个错误 > 线程 1:EXC_BAD_ACCESS (code=1, address=0x48) 起初我有这些吗? Xcode 中声音文件旁边的标记,当我将鼠标悬停在它上面时,它说“未版本化”。我右键单击它并选择“源代码控制”-“添加”并更改为小 A(添加)并修复。但是在将var audioPlayer = AVAudioPlayer() 更改为您建议的var audioPlayer: AVAudioPlayer! 之前,我仍然收到错误消息【参考方案2】:

您是否将框架添加到您的项目中? 如果没有,试试这个

在游戏/应用程序的常规标签中 框架、库和嵌入式内容 点击 + 并输入或搜索 AVFoundation.framework

希望对你有帮助

【讨论】:

以上是关于线程1:EXC_BAD_ACCESS(代码=1,地址=0x48)avaudiofoundation的主要内容,如果未能解决你的问题,请参考以下文章

崩溃:“线程 1:EXC_BAD_ACCESS”?

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

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

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

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

迷宫构造器问题 [线程 1:EXC_BAD_ACCESS(代码=1,地址=0x8)]