使用Xcode和Instruments处理iOS内存泄露

对于MRC来说,了解内存泄露是非常重要的,尽管大部分人现在使用的是ARC。虽然iOS加入了ARC机制,但由于相互引用关系比较复杂,内存泄露还是可能存在的。所以有必要了解其原理。

下面我们就来看看如何使用Instruments来查找程序中的内存泄露,以及NSZombirEnabled(僵尸模式)的设置:

1.打开你的工程,在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash的原因。如

这里

2.设置NSZombieEnabled开始调试吧

首先,我们开启僵尸模式,如图


在你的xcode的左边,长按就出来了

然后这个勾选


勾选开启僵尸模式

然后运行程序,按刚才的操作选中其中的cell。再次crash,这次在output窗口会看到多了一项错误信息。问题基本就可以找出来了。

3.下面我们来看如何分析内存泄露

用XCode的Analyze就能分析到哪里有内存泄露,看图


xcode为第一响应

然后设置了以后,我们会看到这个


蓝色标志的地方就是有内存泄露的地方来了

4. 下面使用Instruments的leaks工具来查看

首先

还是要xcode第一响应

选择Leaks,然后Choose

选中list中的项,拖动等操作后,工具显示

红色的柱子表示内存泄露

下面我们来定位泄露的地方。

先在工具栏按下红色的圆形按钮,把工具监视内存的活动停下来。选择Leak,然后点中间十字交叉那,选择Call Tree.

选中Leak,选择CallTree

这时候左下角的Call Tree的可选项可以选了。选中Invert Call Tree 和Hide System Libraries,显示如下:

这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。

你只要在这些方法上双击,就会跳转到具体的代码

泄露的地方找到了,就是红色区域

到这里,内存泄露基本已经找到了,找适当的地方release下吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容