iOS 13.1 AVAudio 播放器崩溃

iOS 13.1 Crash in AVAudio Player

我的应用程序在 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 初始化时崩溃。

我在 AVAudioPlayer 和 iOS 13.1.

中发现了崩溃问题

这是解决方案

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

我初始化 AVAudioPlayer 就像

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()

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

wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)

我的应用崩溃了。

解决方案

如果您以任何方式初始化您的 AVAudioPlayer,如 var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()wrongMusicPlayer = AVAudioPlayer(),请将其删除,然后像 var wrongMusicPlayer: AVAudioPlayer!.

一样声明

Objective C 代码也会出现同样的问题。

之前musicPlayer = [[AVAudioPlayer alloc] init]; 会工作,但现在会导致 iOS13 崩溃。当使用其他初始化方法之一(如 initWithContentsOfURL)时,稍后会发生崩溃。

删除 [[AVAudioPlayer alloc] init] 解决了这个问题。

谢谢,拉凯什! 太奇妙了! 我的游戏在 iPhone 和 iOS 13.1.2 上中断。但在模拟器中它的工作。在物理设备上 - 不! 我看了很多论坛、在线书籍、文档等

这个小修复确实帮助了我: 我将 var player = AVAudioPlayer() 更改为 var player: AVAudioPlayer!

p.s。伙计们写了关于线程的问题,但这种情况更简单

iOS 今天发布的 13.2 修复了这个问题。