XCode 检测内存泄露:Instruments中的Leaks

若是要检测内存泄露,咱们会使用Xcode7自带的Instruments中的Leaks工具来检测.框架

如今的开发环境是ARC,因此不多会出现内存泄漏的状况. 不过咱们必定要养好码代码的规范性. 例如:使用通知,别忘了移除; 使用presentViewController弹出新的控制器,别忘了dismiss等等.ide

若是出现了内存泄露,通常是导入了c的第三方框架. 或者在项目中使用c的类建立了对象,没有手动释放该对象;例如Quartz2D绘图工具

          

//1.获取图形上下文
      CGContextRef ctx=UIGraphicsGetCurrentContext();     
//2.绘图
//2.1建立一条直线绘图的路径
//注意:但凡经过Quartz2D中带有creat/copy/retain方法建立出来的值都必需要释放
      CGMutablePathRef path=CGPathCreateMutable();
//2.2把绘图信息添加到路径里
      CGPathMoveToPoint(path, NULL, 20, 20);
      CGPathAddLineToPoint(path, NULL, 200, 300);
//2.3把路径添加到上下文中
//把绘制直线的绘图信息保存到图形上下文中
      CGContextAddPath(ctx, path);
//3.渲染
      CGContextStrokePath(ctx);
//4.释放前面建立的路径.若是没有写这句就会形成内存泄露
      CGPathRelease(path);



Leaks的使用方法:

第一步:打开Xcode7自带的Instruments测试

或者:ui

按上面操做,build成功后跳出Instruments工具,选择Leaks选项code

选择以后界面以下图:

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

1.选中Xcode先把程序(command + R)运行起来内存

2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了开发

3.因为Leaks是动态监测,因此咱们须要手动操做APP,一边操做,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:table

4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree

显示以下图界面

5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示以下:

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

6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示

7.找到了内存泄露的地方,那么咱们就能够修改便可

相关文章
相关标签/搜索