AVFAudio 的 IOS 内存泄漏 - AVAudioSession

标签 ios swift memory-management memory-leaks

我尝试创建一个简单的项目。在这个项目中有一些图像和它们的名称,当用户按下图像时,图像名称从 mp3 源文件中播放并传递下一个图像。但是,当我传递下一张图像时,每个下一个项目的内存使用量增加到 300mb。当我通过帮助仪器检查发生内存泄漏的位置时,我看到大部分内存泄漏是由 AVFAudio 库 - AVAudioSession 引起的。

enter image description here

也许我的播放声音的方法是错误的。这是我播放声音的代码:

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/

相关文章:

arrays - 如何将数据插入到空数组的文本字段中,然后显示在标签中?

c - 如果您不释放微 Controller 中分配的内存会怎样?

ios - 'NSObjectInaccessibleException' - CoreData 与 TodayViewExtension 共享

ios - 限制 VoiceOver 从 UILabel 读取的文本

ios - UITableView 通过内容偏移获取中间位置

c - malloc 与 mmap 性能

python - 如何让多个用户同时使用同一个系统运行tensorflow程序?

ios - 应用被杀死时如何判断应用是从NotificationCenter(Local Notification)打开还是从应用图标打开

ios - Coreplot plotSymbolWasSelectedAtRecordIndex on touch up

objective-c - 从 super View 中删除存储在数组中的 UIView