当我跟踪问题时,我的应用程序在iOS 13.1上崩溃,然后发现由于AVAudioPlayer
而导致应用程序崩溃。
下面是我的播放器设置。
if let wrongURL = Bundle.main.url(forResource: "wrongAudio", withExtension: "mp3")
{
do {
wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)
wrongMusicPlayer.prepareToPlay()
}
catch
{
print(error.localizedDescription)
}
}
此处所有内容均正确找到,但是当AVAudioPlayer
尝试使用URL
初始化时崩溃。
答案 0 :(得分:40)
我在AVAudioPlayer
中发现了iOS 13.1的崩溃问题。
这是解决方案
为什么我的AVAudioPlayer
崩溃了?因为
我像
一样初始化AVAudioPlayer
var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()
然后我尝试如下重新分配wrongMusicPlayer
wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)
我的应用崩溃了。
解决方案
如果您以任何方式初始化AVAudioPlayer
或var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()
的{{1}},请删除它,然后像wrongMusicPlayer = AVAudioPlayer()
一样声明。
答案 1 :(得分:3)
今天发布的iOS 13.2已解决此问题。
答案 2 :(得分:2)
谢谢,雷克什! 太奇妙了! 我的游戏在装有iOS 13.1.2的iPhone上中断。但是在模拟器中,它是有效的。在物理设备上-不! 我读了很多论坛,在线书籍,文档等。
这个小问题确实对我有帮助:
我将var player = AVAudioPlayer()
更改为var player: AVAudioPlayer!
p.s。伙计们写了关于线程问题的文章,但这种情况比较简单
答案 3 :(得分:1)
Objective C代码也会发生相同的问题。
以前,musicPlayer = [[AVAudioPlayer alloc] init]; 可以,但是现在会导致iOS13崩溃。稍后,当使用其他initWithContentsOfURL等其他init方法之一时,发生崩溃。
删除[[AVAudioPlayer alloc] init]可解决此问题。