Вы можете использовать стандартные методы для кэширования ранее созданных ячеек. В вашем методе - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
вы должны создать ячейки, используя следующий подход:
static NSString *CellIdentifier = @"YourCellIdentifier";
cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// create (alloc + init) new one
[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = myCell;
self.myCell = nil;
}
// using new cell or previously created
Не забывайте, что вы будете хранить в памяти объекты для всех видимых ячеек. Когда вы прокрутите таблицу, эти ячейки будут использованы повторно.
Например, если у вас есть 10 видимых ячеек, то ячейка будет == ноль в 10 раз, и вы будете выделять + инициализировать их. Когда вы прокрутите вниз, будет создана еще одна ячейка (так как будет видно 11 ячеек), и для 12 ячеек вы будете использовать ячейку, созданную для первой ячейки.
Как сказал @rckoenes, не забудьте установить одинаковые CellIdentifier
ячейки в IB.
Надеюсь, мне было ясно.