Предотвратить UITableView от повторного использования UITableViewCell? - PullRequest
1 голос
/ 04 октября 2011

Вредно ли комментировать код, который повторно использует ячейку в UITableView?

//    if (cell == nil) 
//    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
//    }

Спасибо.

РЕДАКТИРОВАТЬ: Основываясь на ответе @jrturton, я решил не делать этого.

Ответы [ 2 ]

7 голосов
/ 04 октября 2011

Это увеличит использование памяти и повлияет на производительность прокрутки. Если у вас есть только 10 клеток, это, вероятно, не имеет никакого значения. С 1000 это будет очень заметно.

Вам также необходимо закомментировать вызов очереди в tableView.

Я должен спросить, хотя - почему вы обеспокоены этим? Там может быть лучшее решение вашей проблемы.

Исходя из вашего комментария, вы все равно можете повторно использовать ячейку в строке - в противном случае, когда что-то прокручивается за пределы экрана и возвращается, вам придется воссоздать его. Вы можете включить строку и раздел indexPath в строку повторного использования ячейки, чтобы облегчить это:

NSString *cellIdentifier = [NSString stringWithFormat:@"cell%d.%d",indexPath.section,indexPath.row];
1 голос
/ 04 октября 2011

Если у вас нет очень конкретной / уникальной причины, вам следует использовать механизмы для очереди и удаления ячеек, которые предоставляются в методе шаблона cellForRowAtIndexPath. Это уменьшит объем памяти и обеспечит плавную прокрутку.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...