【发布时间】:2021-02-03 02:13:29
【问题描述】:
我在开发的应用程序中遇到问题,最终导致打开太多音频文件。我还没有找到任何关闭文件的方法,所以我尝试将不习惯的文件设置为 nil,但问题仍然存在。
我已将音频文件声明为非可选文件,例如:
let audioFile1 = AKAudioFile!
在初始化它们的方法中,初始化失败(在打开太多文件后)在以下代码块中(audioUrl 是方法的参数之一):
var audioFileOpt: AKAudioFile?
do {
audioFileOpt = try AKAudioFile(forReading: audioUrl)
} catch let error {
print("Error reading url: ", audioUrl)
print(error.localizedDescription)
}
这是返回的错误:The operation couldn\U2019t be completed. (com.apple.coreaudio.avfaudio error -42.),这是一个 CoreAudio 错误 (kAudio_TooManyFilesOpenError)。
对于如何解决此问题的任何建议,我将不胜感激。
【问题讨论】:
-
我希望不持有对对象的引用就足够了。你打开了多少音频文件?在 OS X 上,您可以尝试使用
lsof命令查看进程打开了哪些文件描述符,并验证音频文件是否是主要攻击者。
标签: swift xcode runtime-error core-audio audiokit