AVAudio Player中的iOS 13.1崩溃

时间:2019-09-26 06:33:26

标签: ios swift avaudioplayer ios13

当我跟踪问题时,我的应用程序在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初始化时崩溃。

4 个答案:

答案 0 :(得分:40)

我在AVAudioPlayer中发现了iOS 13.1的崩溃问题。

这是解决方案

为什么我的AVAudioPlayer崩溃了?因为

我像

一样初始化AVAudioPlayer
var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()

然后我尝试如下重新分配wrongMusicPlayer

wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)

我的应用崩溃了。

解决方案

如果您以任何方式初始化AVAudioPlayervar 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]可解决此问题。