使用Instruments检测解决iOS内存泄露
在苹果没有出ARC(自动内存管理机制)时,我们几乎有有一多半开发时间都耗费在怎么管理内存上.后来苹果出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我们在开发过程中,由于各种原因,还是会出现内存泄露的问题.内存泄露是一个很严重的问题.下面就简单介绍下怎么使用Xcode8自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.分析代码不是找出所有的内存泄漏因为有些泄漏是在运行时,用户操作的时间才会产生的
第一步:打开Xcode8自带的Instruments
按上面操作,build成功后跳出Instruments工具,选择Leaks选项
选择之后界面如下图:
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1:选中Xcode运行,如果Xcode左上角已经是instrument的图标就不用执行这一步了
2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
3.Leaks是动态监测所以我们需要手动操作APP,同时观察Leaks的变化,当出现红色的叉的时间,就是监测到内存泄漏了,点击界面左上角的第二个暂停按钮,如图所示
4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree
5点击Call Tree,显示如下:
到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!
6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示
7.找到了内存泄露的地方,那么我们就可以修改即可
在选择call tree后,可能你会发现查看不到源码从而无法定位内存泄漏的位置,只是显示16进制的数据。此时需要你在Xcode中检查是否有dSYM File生成,如下图所示选择第二项DWARF with dSYM File.