iOS 检测内存泄漏Analyze出现的一些问题

来源:互联网 发布:linux部署javaweb项目 编辑:程序博客网 时间:2024/05/27 14:13

首先,让我们大呼三声:

NO WARNING !  NO ANALYZE!

NO WARNING !  NO ANALYZE!

NO WARNING !  NO ANALYZE!


1. Value stored to 'XXX' during its initialization is never read

这种情况通常是定义了一个对象或者变量而在后续没有使用,多占用了内存,并不是发生了内存泄露,这里说两个我遇到的问题。

    CGFloat height = WIDTH * 0.2f;    if (indexPath.row == 0) {       height = 100;    } else if (indexPath.row > 4) {       height = 200;    }else {       height =50;    }        return height;
在这里height变量就会报该问题,因为我们初始化的值并没有在后续代码中使用,此时我们只需要将第一行修改为

<span style="white-space:pre"></span>CGFloat height;
即可。


    AnswerSheetCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"AnswerSheetCell" owner:self options:nil] lastObject];    cell = [cv dequeueReusableCellWithReuseIdentifier:cell_Identifier forIndexPath:indexPath];    cell.backgroundColor = [UIColor clearColor];    
此时同样会报该问题,因为cell的初始化和复用同时执行,会造成每次使用cell的时候都被初始化,并且在随后再次复用。

    <pre name="code" class="objc">   AnswerSheetCell *cell = [cv dequeueReusableCellWithReuseIdentifier:cell_Identifier forIndexPath:indexPath];
     if(cell == nil){
<span></span> cell = [[[NSBundle mainBundle] loadNibNamed:@"AnswerSheetCell" owner:self options:nil] lastObject];
<span></span> cell.backgroundColor = [UIColor clearColor];
}

按照cell的标准写法就没问题啦!


2. Potential leak of an object stored into 'XXX'

例如此时的cfuuid:

    NSString *udidString;    udidString = [[self class] objectForKey:@"deviceID"];    if(!udidString)    {        CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);        udidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));        [[self class] setObject:udidString forKey:@"deviceID"];    }

For every object that you create with a CF*Create function, you should release it with CFRelease. This is part of the Core Foundation ownership policy.

3.Value stored to 'XXX' is never read

一般来说,这个是定义的变量或者对象在赋值或者初始化之后,在后续的代码中每次使用均重新赋值或者重新初始化的情况下,会出现这样的分析问题。

4.The left operand of '&' is a garbage value

这里说明是在数据赋值的时候

0 0
原创粉丝点击