我尝试创建一个简单的项目。在这个项目中有一些图像和它们的名称,当用户按下图像时,图像名称从 mp3 源文件中播放并传递下一个图像。但是,当我传递下一张图像时,每个下一个项目的内存使用量增加到 300mb。当我通过帮助仪器检查发生内存泄漏的位置时,我看到大部分内存泄漏是由 AVFAudio 库 - AVAudioSession 引起的。
也许我的播放声音的方法是错误的。这是我播放声音的代码:
var sound: AVAudioPlayer!
func playSound(name: String) {
let path = Bundle.main.path(forResource: name, ofType: "mp3")
let soundURL = URL(fileURLWithPath: path!)
do {
try sound = AVAudioPlayer(contentsOf: soundURL)
} catch let err as NSError {
print(err.debugDescription)
}
}
@IBAction func btnClick(_ sender: UIButton) {
playSound(name: "table")
sound.play()
}
是不是我的“播放声音”方式不对?为什么会发生这种内存泄漏?如何解决这个问题呢。谢谢
最佳答案
我在设备上测试了大约 30-40mb 的设备和内存使用情况。所以问题与在模拟器上测试有关。但是我不知道为什么模拟器不释放所有AVAudioSession并增加内存使用。
关于AVFAudio 的 IOS 内存泄漏 - AVAudioSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759024/