对于Leaks工具而言,只是为了帮助开发者能更好的开发出一款稳定性能的APP。仅仅是一个检测的工具,具体为什么在ARC下很多开发者还是会造成如此多的内存泄露,这里不做评判。下面图解一下Instruments中Leaks该如何检测我们的内存问题,希望能帮助提高新人开发者的代码质量。
这里我随意创建一个工程,书写了一段两个Array对象循环引用导致的内存泄露,我们通过工具来检测一下
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *arr1 = @[@"1", @"2"].mutableCopy;
NSMutableArray *arr2 = @[@"23", @4].mutableCopy;
[arr1 addObject:arr2];
[arr2 addObject:arr1];
}
运行你的程序,点击程序内存使用情况如下图:
点击 Profile in Instruments 按钮,弹出如下提示
点击 Restart 重新开始,则Leaks会自动启动如下
到这里Leaks就开始检测了,如果检测到内存泄露就会红X提示
选择Call Tree,再隐藏掉系统库,如果检测到泄露,我们可以立即暂停检测来修复
当然,也可以检测一段时间后暂停,然后通过以下方式来定位某个泄露区域的代码实现
双击进入到泄露的代码位置,我们可以通过一系列的设置达到自己想查看的效果
点击图中的Xcode图标可以直接定位的此类的代码位置,便于我们修改
到这里我们只检测出了泄露的代码,具体如何修改,我们还得有一定的MRC基础才可以,我们必须了解内存管理的原则及原理。
这里有几个内存管理比较优秀的博客链接可供大家参考下:
http://chuansong.me/n/461440328826
http://ios.jobbole.com/92903/