【发布时间】:2016-01-10 07:19:07
【问题描述】:
当我从 Xcode 运行我的应用程序时,很明显我有内存泄漏:
当我展示一个自定义 ViewController 时,内存会增加,但当我关闭它时,它并没有回落。
所以我也使用 Instruments 的 Allocation 工具进行了检查,但这讲述了一个不同的故事:
如您所见,当我展示 ViewController 时,Instruments 会显示峰值,但当它被关闭时,内存使用量会回落到之前的水平。
我已经检查了我的代码至少 15 次,我个人没有发现任何内存泄漏,因此同意 Instruments。我还在我的所有对象中实现了deinit 函数,这些对象会像这样分配:
deinit {
print("Deinnited \(id)")
}
所有对象都按预期打印到控制台。
会发生什么?我正在使用:
- iOS 9.0
- XCode 版本 7.0 (7A220)
- 斯威夫特 2.1
Run 和 Profile 的模式都在“调试”中
【问题讨论】:
-
只是检查,但您如何消除这些意见?还有空闲时间吗?我发现仪器往往只显示软件方面。它不会向您显示尚未清理的 ram。当没有空闲时间时,操作系统无法清理内存。你有单身人士吗?或用于兑现的共享实例?可能是一个强大的参考周期。尝试将东西设置为弱。只是到处乱想......
-
如果你多次重复打开关闭,你会发现 Xcode 中的内存消耗在增加吗?
-
@Darko 是的。我在 Xcode 中看到内存消耗在增加,但在仪器中没有看到
-
我的意思是它会不断上升,直到你经历崩溃?为此,您必须直接在设备上进行调试。
-
@Menke 我在父视图控制器上使用了dismissViewController。我对所有代表都使用弱引用。我没有单身人士。我已多次检查我的代码,但找不到任何强引用循环。
标签: ios xcode swift memory-leaks instruments