我在iPhone X上更新到iOS 13后,便开始发生内存泄漏,并且内存消耗持续增加,而且从未减少。在其他设备(例如iPhone 6,7等)上也没有发生这种情况。
我已经尝试使用显示以下泄漏图的仪器调试泄漏
这里列出了多个URLSession
对象。这表明这些会话已实例化,但从未释放。
如果要为每个请求创建一个单独的会话,请确保在提交请求后调用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
),然后所有请求都可以共享同一会话。