iOS开发之Xcode自带Instruments检测内存泄漏

关于内存泄漏如何检测,Xcode自带Instruments工具可以显示,但是有个小问题,网上复制粘贴的文章只字不提,内存泄漏地方只能看到地址,而不是具体的代码行,简直就是坑啊.所以这里重点提一下,下边是通用的操作流程,熟悉的童鞋可以忽略,喝咖啡去.

1.最最重要的第一步

iOS开发之Xcode自带Instruments检测内存泄漏_第1张图片
Paste_Image.png

Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件。回到上面的问题,如果在后边显示0xedc00与0xedbda是因为我们的工程build settings 的问题,没有生成dSYM 文件,也就无法解析debug symbols。

具体操作

1.开启Xcode自带的Instruments
iOS开发之Xcode自带Instruments检测内存泄漏_第2张图片
或者:
iOS开发之Xcode自带Instruments检测内存泄漏_第3张图片
按上面操作,build成功后跳出Instruments工具,选择Leaks选项
iOS开发之Xcode自带Instruments检测内存泄漏_第4张图片
选择之后界面如下图:

到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!

1.选中Xcode先把程序(command + R)运行起来
2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:
iOS开发之Xcode自带Instruments检测内存泄漏_第5张图片
Paste_Image.png
4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree
iOS开发之Xcode自带Instruments检测内存泄漏_第6张图片
显示如下图界面(两个对比)
iOS开发之Xcode自带Instruments检测内存泄漏_第7张图片
5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
iOS开发之Xcode自带Instruments检测内存泄漏_第8张图片

到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!

6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示
Paste_Image.png
7.找到了内存泄露的地方,那么我们就可以修改即可

你可能感兴趣的:(iOS开发之Xcode自带Instruments检测内存泄漏)