2016-10-31 1 views
0

У меня есть класс, который определяет настраиваемую контактную ячейку, называемую ContactItemCell, и файл xib, который выдает эту ячейку. Когда я создаю представление таблицы, он открывается, и шесть из этих классов ContactItemCell создаются. Когда я перемещаюсь назад, они не освобождаются, и когда я открываю табличное представление, создается еще 6. Вот код TableView:Пользовательский UITableViewCell не выпускается или не используется после навигации, утечки памяти

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Contact* contact = [self contactAtIndexPath:indexPath]; 

    static NSString *cellID = @"ContactItemWithTagsForBothCell"; 
    ContactItemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 

    if (cell == nil) 
    { 
     NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"ContactItemWithTagsForBothCell" owner:nil options:nil]; 

     if (arr.count <= 0) 
     { 
      NSLog(@"couldnt find cell with ID: %@", cellID); 
      return nil; 
     } 

     cell = [arr firstObject]; 
    } 

    [cell configureCellForContact:contact]; 

    return cell; 
} 

FileOwner в файле XIb просто установить, чтобы быть пустым, который я предполагаю, что средства NSObject. Я пробовал искать сильный ссылочный цикл, чтобы узнать, поддерживается ли класс указателями, но я не видел ничего после дней расследования. Я действительно нахожусь на своем пределе, и я не уверен, что еще я могу сделать, я тоже использую инструменты, и вот как я понял, что они создаются 6 за раз, но я не могу найти что указывает на них. Почему это происходит? Я что-то делаю с табличным представлением? Если это не так, и вы думаете, что это сильный справочный цикл, то как я могу найти каждый объект, который указывает на этот ContactItemCell? Заранее спасибо!

+1

Что говорит отладчик памяти? http://useyourloaf.com/blog/xcode-visual-memory-debugger/ –

+0

Я расскажу об этом уроке, о котором я до сих пор не слышал об отладчике памяти, я очень ценю подсказку, и я вернусь вам в ближайшее время. – Minimi

+0

@JoshHomann Чувак, что ты спас мне жизнь, я бы не нашел проблему без этого инструмента. Огромное спасибо. Проблема состояла в том, что старый разработчик перезаписал базовый uiviewcontroller и добавил tableview в массив, поэтому, когда диспетчер представлений был освобожден, представление таблицы не было. Я бы не нашел это без удивительного инструмента графика отладочной памяти. Ты потрясающий брат. – Minimi

ответ

1

Если кому-то было любопытно, я использовал отладчик памяти и обнаружил, что был сильный справочный цикл с стручком, который я использовал.