在新的 iOS 版本中,AVAudioPlayer 数组出现错误的访问错误,但为啥
Posted
技术标签:
【中文标题】在新的 iOS 版本中,AVAudioPlayer 数组出现错误的访问错误,但为啥【英文标题】:At New iOS Versions AVAudioPlayer Arrays gets Bad Access Error But Why在新的 iOS 版本中,AVAudioPlayer 数组出现错误的访问错误,但为什么 【发布时间】:2019-11-07 09:15:32 【问题描述】:我正在使用以下函数来准备多个音频播放器。
但是当在新的 ios 版本上运行代码时,我得到 Thread 1: EXC_BAD_ACCESS (code=1, address=0x48) 玩家[i] = 玩家
它仍然可以在旧 iOS 版本上正常运行。
func loadMusicToAPlayer(i: Int, name: String)
let s = Bundle.main.path(forResource: name, ofType:nil)!
let url = URL(fileURLWithPath: s )
do
let player = try AVAudioPlayer(contentsOf: url)
players[i] = player
players[i].prepareToPlay()
players[i].isMeteringEnabled = true
catch
print("couldn't load music file :( ")
【问题讨论】:
在您创建 player 属性的位置显示您的代码 我正在创建这样的播放器数组,var player : [AVAudioPlayer] = [], players.append(AVAudioPlayer()) , 尽可能多地循环。AVAudioPlayer()
在 iOS13 的早期版本上崩溃。 ***.com/questions/58110827/…***.com/questions/58144735/…等
是的,我注意到如果我创建像 players.append(player) 这样的播放器,它可以工作,但我现在必须更改代码。因为我从多个地方调用函数。
【参考方案1】:
在使用上面的函数之前,我正在创建一个这样的数组。 我就是这样做的
for k in 0..< audioList.count
players.append(AVAudioPlayer())
因为有时我会更改名称 播放器的音频。为了轻松做到这一点,我分离了音频加载功能。
现在,我正在创建这样的播放器数组。 并在相关功能的修订版中更改了音频名称。
func loadAudio(name: [String])
for k in 0..< name.count
let s = Bundle.main.path(forResource: name[k], ofType:nil)!
let url = URL(fileURLWithPath: s )
do
let player = try AVAudioPlayer(contentsOf: url)
players.append(player)
catch print("could not load audio file"
【讨论】:
以上是关于在新的 iOS 版本中,AVAudioPlayer 数组出现错误的访问错误,但为啥的主要内容,如果未能解决你的问题,请参考以下文章
无法在新的 Xcode 版本 13 上运行 React 本机 IOS 应用程序
如何在新的 iOS 7 和 Xcode 5 上使用旧 ios 版本构建我的应用程序
无法在新的 AWS EMR 集群中获取 SparkContext