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

本文主要介绍了在使用Analyze工具进行iOS应用内存泄漏检测时,可能会遇到的四种常见问题:未读取的初始化值、潜在的对象泄漏、未被读取的存储值以及操作符'&'前的垃圾值。这些问题并不全代表真正的内存泄漏,但应当引起关注,以优化代码和避免资源浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,让我们大呼三声:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值