Xcode显示内存泄漏,但仪器没有

Mat*_*dus 11 xcode memory-leaks instruments ios swift

当我从Xcode运行我的应用程序时,很明显我有内存泄漏:

在此输入图像描述

当我呈现一个自定义的ViewController时,内存会增加,但是当我解除它时,它不会再回落.

所以我也使用了仪器的分配工具进行了检查,但这说明了一个不同的故事:

在此输入图像描述

正如您所看到的,当我呈现ViewController时,Instruments会显示尖峰,但是当它被解除时,内存使用量会回落到之前的水平.

我已经检查了我的代码至少15次,我个人找不到任何内存泄漏,因此同意仪器.我还在deinit我的所有对象中实现了这样的函数,如下所示:

deinit {
  print("Deinnited \(id)")
}
Run Code Online (Sandbox Code Playgroud)

并且所有对象都按预期打印到控制台.

会发生什么事?我在用:

  • iOS 9.0
  • XCode 7.0版(7A220)
  • 斯威夫特2.1

Run和Profile的模式都在"debug"中

And*_*ius 6

如果你从苹果的角度看它,这是一个非常讨厌的Xcode错误或者可能是一个功能:).

我今天确实遇到了它,这里是如何解决它.

  1. 按设置方案的应用程序名称(xcode中的停止按钮旁边)

  2. 选择"编辑方案"

  3. 选择"运行"(弹出窗口的左侧)

  4. 选择"选项"(弹出窗口的顶部)

  5. 取消选中"启用回溯录制"(您需要向下滚动的最后选择)

缺点是如果崩溃,将禁用回溯.所以我想你想根据你想要关注的内容来切换那个开关.

在"配置文件"方案中,未启用回溯,因此您在使用调试导航器(运行方案)时只看到内存泄漏而在仪器(配置文件方案)中没有.

/安德斯.


Mat*_*dus 3

在 Google 和其他论坛上进行了大量研究后,这似乎是 XCode 的一个错误。