iOS 5 cellForRowAtIndexPath内存泄漏

时间:2012-02-12 11:38:37

标签: ios memory-leaks uitableview automatic-ref-counting

我在使用Instruments时一直在设备上测试应用程序(iOS 5),我发现了一些内存泄漏。

这是我从Instruments重定向到的代码的一部分(参见确切行的箭头):

- (UITableViewCell *)tableView:(UITableView *)tableView
                         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
      CeldaUltimasFotosViewCell *cell =
          (CeldaUltimasFotosViewCell *) [self.tableView 
                 dequeueReusableCellWithIdentifier:@"CeldaUltimasFotosViewCell"];

      if (cell == nil) {
- - - - > NSArray *topLevelObjects =
                       [[NSBundle mainBundle] 
                             loadNibNamed:@"CeldaUltimasFotosViewCell"
                                    owner:nil options:nil];
          cell = [topLevelObjects objectAtIndex:0];
      }

      // Configure the cell...
      [[cell titulo] setFont:fuente_titulo];
      ...
      return cell;
}

如您所见,我有一个从NIB文件加载的自定义单元格。该单元格有三个文件(customCell.mcustomCell.hcustomCell.xib)。问题是我不知道是否必须在单元控制器中释放一些东西(现在是空的,没有方法),因为这是带有ARC的iOS 5。

2 个答案:

答案 0 :(得分:0)

查看表格视图编程以及如何从NIB(XIB)文件加载单元格。

https://developer.apple.com/library/ios/#documentation/userexperience/conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW1

首先,您将单元格存储在局部变量中。您应该将自定义单元格连接到类中的属性,并且您在代码中调用的所有内容都是:

[[NSBundle mainBundle] loadNibNamed:@"CeldaUltimasFotosViewCell" owner:self options:nil];

按照从Nib文件加载自定义表格查看单元格中的代码,您不会出错。

答案 1 :(得分:0)

在这里查看我的答案:

How can I recycle UITableViewCell objects created from a XIB?

你甚至不需要在iOS5上使用loadNibNamed了