Instruments检测内存泄露

前言

    如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测.

现在的开发环境是ARC,所以很少会出现内存泄漏的情况. 不过我们一定要养好码代码的规范性. 例如:使用通知,别忘了移除; 使用presentViewController弹出新的控制器,别忘了dismiss等等.

如果出现了内存泄露,一般是导入了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 (快捷键 cmd + i)


    Instruments检测内存泄露_第1张图片
    Podfile.png
  • 然后会显示Instruments工具界面,选择Ladks


    Instruments检测内存泄露_第2张图片
    Instruments.png
  • 选择之后界面如下图, 有两个位置需要设置


    Instruments检测内存泄露_第3张图片
    Instruments2.jpeg

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

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

  • 2.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测

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

  • 4.找到了内存泄露的地方,那么我们就可以修改即可

你可能感兴趣的:(Instruments检测内存泄露)