前言
如果要检测内存泄露,我们会使用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工具界面,选择Ladks
-
选择之后界面如下图, 有两个位置需要设置
到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
1.选中Xcode先把程序(command + R)运行起来
2.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测
3.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示
4.找到了内存泄露的地方,那么我们就可以修改即可