iOS 5 cellForRowAtIndexPath Утечка памяти - PullRequest
1 голос
/ 12 февраля 2012

Я тестировал приложение на устройстве (iOS 5) при использовании Instruments и обнаружил пару утечек памяти.

Это часть кода, на которую меня перенаправляют из 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.m, customCell.h, customCell.xib).Дело в том, что я не знаю, нужно ли мне выпускать что-то в контроллере ячейки (который сейчас пуст, методов нет), поскольку это iOS 5 с ARC.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

проверьте мой ответ здесь:

Как перерабатывать объекты UITableViewCell, созданные из XIB?

вам даже больше не нужно использовать loadNibNamed на iOS5

0 голосов
/ 12 февраля 2012

Посмотрите на Программирование табличного представления и как загрузить ячейки из файлов 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];

Следуйте коду из Загрузка пользовательских ячеек табличного представления из файлов пера , и вы не ошибетесь.

...