Создайте подкласс для ячейки UITableView и создайте в ней новый метод, который будет выглядеть примерно так:
- (void)setImage:(NSString *)imageName;
Затем, где вы использовали для установки изображения, измените его, чтобы вместо этого сделать что-то вроде:
[cell setImage:nil];
[cell performSelector:@selector(setImage:) withObject:@"imageName" afterDelay:0];
Изменение его на executeSelector: withObject: afterDelay: означает, что код для установки изображения не будет выполняться во время прокрутки tableView. Это должно привести к значительному улучшению производительности прокрутки, поскольку изображения не будут помещаться в ячейки до тех пор, пока прокрутка не прекратится.
Однако вы заметите отсутствие изображений при прокрутке, поэтому вы можете рассмотреть маленькое изображение-заполнитель в месте изображений, которое будет появляться при прокрутке.
Лично я использую этот метод в своем коде условно. Я определяю, сколько лет UIDevice, и, если это устройство более старого поколения, я буду лениво загружать его, чтобы увеличить производительность прокрутки.