快速的一个人。快速浏览下面的代码片段。我分配UILabel * textLabel但我不释放它(注释掉)。当方法结束时,我失去了指针的引用,所以它会泄漏。为什么仪器不能找到这个泄漏?
问题是XCode Instruments没有发现这个泄漏,我会认为它是一个非常简单的情况下找到它。它没有在我的应用程序中报告任何泄漏,但我自己发现了这一个,这让我有点怀疑。
我是在看东西还是在检测泄漏的仪器方面很差?
-(UITableViewCell*)newReadOnlyCellWithTitle:(NSString*)title andText:(NSString*)text {
UITableViewCell *cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
cell.textLabel.text=title;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
cell.backgroundColor=[UIColor whiteColor];
cell.opaque=YES;
UILabel *textLabel=[[UILabel alloc] initWithFrame:CGRectMake(80, 11, 350, 24)];
textLabel.text=text;
textLabel.textColor=[UIColor lightTextColor];
textLabel.font=[UIFont fontWithName:STANDARD_FONT size:16.0];
textLabel.opaque=YES;
textLabel.backgroundColor=[UIColor clearColor];
[cell.contentView addSubview:textLabel];
//[textLabel release]; //<== without the release this should leak, yep?
return cell;
}
编辑:从静态analyizer输出...
构建和分析(CMD + SHIFT + B)应该找到它:) – cweinberger 2011-04-17 20:11:28
优秀的一点。静态分析仪确实找到它! – Damien 2011-04-17 20:14:05
@theMikeSwan嗨,我想如果你把你的评论作为答案,我会把它标记为正确的。 – Damien 2011-04-17 22:08:18