首页 > 解决方案 > 更新到 iOS 13 后 iPhone X 发生内存泄漏

问题描述

一旦我在 iPhone X 中更新到 iOS 13,内存泄漏就开始发生,并且内存消耗不断增加,永远不会下降。其他设备(例如 iPhone 6,7 等)也没有发生这种情况。

我尝试使用显示以下泄漏图的仪器调试泄漏

内存泄漏流程图

标签: iosswiftmemory-managementmemory-leaksiphone-x

解决方案


这里列出了多个URLSession对象。这表明这些会话已实例化,但从未发布。URLSession这在使用基于委托的API时很容易发生。

如果您要为每个请求创建一个单独的会话,请确保finishTasksAndInvalidate在提交请求后调用,以便URLSession可以自行清理。

例如,以下...

func start() {
    let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)

    session.dataTask(with: url).resume()
}

... 结果是:

在此处输入图像描述

但是,如果我们添加一个finishTasksAndInvalidate

func start() {
    let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)

    session.dataTask(with: url).resume()

    session.finishTasksAndInvalidate()
}

或者,实例化一个URLSession(或使用URLSession.shared),然后所有请求可以共享同一个会话。


推荐阅读