ios - 更新到 iOS 13 后 iPhone X 发生内存泄漏
问题描述
一旦我在 iPhone X 中更新到 iOS 13,内存泄漏就开始发生,并且内存消耗不断增加,永远不会下降。其他设备(例如 iPhone 6,7 等)也没有发生这种情况。
我尝试使用显示以下泄漏图的仪器调试泄漏
解决方案
这里列出了多个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
),然后所有请求可以共享同一个会话。
推荐阅读
- ios - Xcode 将存档分发到 Apple Store:未出现在 Apple Store 中
- python - 使用 group_by 将两个不同表列的总和获取到单个列
- flutter - 即使内容高度低于滚动视图高度,如何使 SingleChildScrollView 可滚动?
- python - Matplotlib plt.text() fails to iterate over loop
- python - 通过对象引用和 pandas DataFrame 传递
- python - 为什么我的 pip install 请求在我安装它时给我一个错误?
- math - 沿向量的一点到另一条线的距离
- c - 堆栈切换的 TSS 表项
- r - R中的mem_change,在删除向量时应该是负数
- sql - SQL - 根据条件填充列值