instruments(03)之Leak(内存泄漏)

此文章主要是分析程序出现的内存泄漏问题,是基于上一篇博客instruments(02)之Allocations附上地址http://www.jianshu.com/p/4f1f3c80186e
首先需要注意以下几件事:leak并不是万能的,也就是说有些内存泄漏问题根本查找不出来,而典型的代表就是UI中的控件。如果leak查找不到内存泄漏并不能代表没有内存泄漏,但是如果查找到了内存泄漏,说明程序肯定有内存泄漏。
如果出现了leak查找不到的内存问题,这时候我们就需要结合Allocations来查找。
接下来新建一个工程,将开发环境设置为MRC。代码如下:



@interface ViewController ()


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadLab];
    [self loadImage];
    [self loadData];
}

- (void)loadLab{
    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    [self.view addSubview:lab];
}

- (void)loadImage{
    NSString *s = [[NSBundle mainBundle]pathForResource:@"1.png" ofType:nil];
    UIImage *image = [[UIImage alloc]initWithContentsOfFile:s];
    NSLog(@"%@",image);
}

- (void)loadData{
    NSArray *arr = [[NSArray alloc]initWithObjects:@"123",@"34",nil];
    NSLog(@"%@",arr);
}

command + i进入如下界面:


内存泄漏图.png

虽然上图中的lab也没有release,但是却没有提示内存泄漏,对UI中的控件,通过leak并不能寻找到内存泄漏问题。因此养成一个良好的编程习惯显得尤为重要。
那么一旦是控件出现的内存问题,我们怎么查找呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先来一发苹果官网上Instruments User Guide,其实没啥用,英语不好的也懒得去看。(反正我是看不懂...
    和珏猫阅读 30,156评论 51 376
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,581评论 25 708
  • 版本记录 前言 我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个...
    刀客传奇阅读 2,902评论 0 1
  • 学习如何使用【Xcode Instruments】来进行错误排查和优化代码。 更新提示:这篇教程由James Fr...
    汝阴龙阅读 1,311评论 0 1
  • 刚回来的那天晚上,我从灶台边上抢救回来一盒东西,是我所有的回忆,差点被烧掉了。刚刚闲着没事,整理一下,除了泛黄的卡...
    Umika阅读 279评论 0 0