如何解决这个内存泄漏?

时间:2011-05-05 05:17:10

标签: iphone objective-c memory-leaks

+ (UITableViewCell *)inputCell {
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;  
    cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
    return cell;
}

Xcode显示内存泄漏。我尝试在单元初始化期间和返回期间提供自动释放,但应用程序在两种情况下都崩溃了。

2 个答案:

答案 0 :(得分:1)

您发布的代码会泄漏内存,因为您的alloc init将返回一个保留计数为1的单元格。据推测,调用代码然后将此对象返回到cellForRowAtIndexPath,它将它附加到UITableView并再次增加保留计数(到两个)。因此,当UITableView释放它的内存时,该对象的保留计数仍为一。

如果您尝试在此代码中自动释放该对象并且崩溃,那么您会有一个单独的错误。

答案 1 :(得分:0)

UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"] autorelease];
除非您在调用-inputCell

的代码时遇到问题,否则

应该没问题