Вы повторно используете ячейки в табличном представлении? Удостоверьтесь, что вы действительно используете их повторно, другими словами, выполните всю настройку ячейки внутри случая if (cell == nil) и примените данные только в общем случае (как для повторного использования, так и для вновь созданного).
Помните о том, что в ячейку может попасть прозрачность. Часто кажется, что вы должны сделать вещи прозрачными, но, возможно, вы не делаете, потому что UITableViewCell знает о проблемах. Отключение прозрачности в некоторых объектах может показаться неправильным, но стоит попробовать посмотреть, действительно ли это работает. Большая часть стоимости прокрутки ячейки - это создание композиции по мере ее перемещения, а не создание ячейки изначально.
Еще одна вещь, которая может помочь, - это создание компоновки представления, которое вы применяете к своей ячейке заранее, вместо добавления всех представлений к ячейке, тогда вы применяете только один предварительно подготовленный вид к своей ячейке.
Если вы на самом деле анимируете представления в прокручивающихся ячейках, вам, возможно, придется переосмыслить это или хотя бы использовать какое-то упрощение, чтобы сделать его немного менее затратным для устройства.
Вы можете также рассмотреть вопрос о принятии стратегии Мэтта Галлахера для обработки ячеек - она останавливает превращение вашего cellForRowAtIndexPath в один длинный и неприятный набор ifs.