UITableView должен иметь возможность плавно и быстро отображать быстро меняющиеся данные, а иногда в ячейках есть дополнительный код для построения самой ячейки с использованием Core Graphics и т. П.
UITableView может отображать только небольшое количество ячеек одновременно, в то время как в источнике данных может быть гораздо больше «строк». Чтобы сократить объем обработки и использования памяти, Apple предоставила метод dequeueReusableCellWithIdentifier. Это позволяет табличному представлению повторно использовать уже созданную ячейку, которая упала из представления, если она доступна.
UITableView может содержать различные типы ячеек. Например, у вас может быть табличное представление, в котором некоторые строки имеют ассоциированное изображение, а другие - нет, с разными макетами ячеек. Или у вас есть разные типы ячеек, в зависимости от других настроек восходящего приложения. CellIdentifier сообщает методу удаления из очереди, какой тип ячейки вы хотите использовать повторно, поэтому вы не получите неправильный тип ячейки.
static NSString *CellIdentifier = @"Cell with image";
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];
Если не удается найти ячейку для повторного использования, ее необходимо создать, например:
if(cell == nil) ....
Путаница возникает, так как многие приложения используют только один тип ячейки для данного табличного представления, поэтому CellIdentifier не изменяется.
Theres хорошая рецензия от Apple по адресу:
https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html
Смотри также:
Использовать два разных идентификатора ячейки в одном и том же табличном представлении
и: http://www.digitalhobbit.com/2009/12/19/a-useful-uitableview-cell-creation-pattern/