对于MRC来说,了解内存泄露是非常重要的,尽管大部分人现在使用的是ARC。虽然iOS加入了ARC机制,但由于相互引用关系比较复杂,内存泄露还是可能存在的。所以有必要了解其原理。
下面我们就来看看如何使用Instruments来查找程序中的内存泄露,以及NSZombirEnabled(僵尸模式)的设置:
1.打开你的工程,在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash的原因。如
2.设置NSZombieEnabled开始调试吧
首先,我们开启僵尸模式,如图
然后这个勾选
然后运行程序,按刚才的操作选中其中的cell。再次crash,这次在output窗口会看到多了一项错误信息。问题基本就可以找出来了。
3.下面我们来看如何分析内存泄露
用XCode的Analyze就能分析到哪里有内存泄露,看图
然后设置了以后,我们会看到这个
4. 下面使用Instruments的leaks工具来查看
首先
选中list中的项,拖动等操作后,工具显示
下面我们来定位泄露的地方。
先在工具栏按下红色的圆形按钮,把工具监视内存的活动停下来。选择Leak,然后点中间十字交叉那,选择Call Tree.
这时候左下角的Call Tree的可选项可以选了。选中Invert Call Tree 和Hide System Libraries,显示如下:
这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。
你只要在这些方法上双击,就会跳转到具体的代码
到这里,内存泄露基本已经找到了,找适当的地方release下吧。