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

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

当我提供一个自定义的ViewController时,内存增加,但是当我关闭它时,它不会退回.

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

可以看出,当我呈现ViewController时,仪器会显示尖峰,但是当内存使用被关闭时,内存使用率将恢复到以前的级别.

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

deinit {
  print("Deinnited \(id)")
}

并且所有物体按预期打印到控制台.

可能会发生什么?我在用:

> iOS 9.0
> XCode Version 7.0(7A220)
> Swift 2.1

运行和配置文件的模式都在“调试”

解决方法

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

我今天遇到了,这里是如何解决的.

>按设置方案的应用程序名称(xcode中的停止按钮旁边)
>选择’编辑方案’
>选择“运行”(弹出窗口的左侧)
>选择’选项'(弹出窗口的顶部)
>取消选中“启用回溯记录”(上次选择您需要向下滚动)

缺点是如果你崩溃,那么回溯将被禁用.所以我想你想切换这个开关取决于你想要关注的.

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

/安德斯.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...