Вы повторно используете ячейки в виде таблицы? Убедитесь, что они действительно повторно используются, другими словами, все настройки ячейки внутри if (cell == nil) и применяются только данные в общем случае (применительно к повторному использованию и вновь созданному).
Помните об эффективности, которую может иметь прозрачность в ячейке. Часто кажется, что вы должны сделать вещи прозрачными, но, возможно, вы этого не делаете, потому что UITableViewCell знает о проблемах. Отключение прозрачности в некоторых объектах может показаться неправильным, но стоит попытаться понять, действительно ли это работает. Большая часть стоимости прокрутки ячейки - это композиция, когда происходит перемещение ячейки, а не создание ячейки изначально.
Другая вещь, которая может помочь, заключается в том, что композиция представления, которую вы применяете в своей ячейке заранее, а не добавляете все виды в ячейку, затем вы применяете только одно готовое представление к своей ячейке.
Если вы на самом деле оживляете виды в прокручивающихся ячеек, вам может потребоваться переосмыслить это или хотя бы использовать некоторое упрощение, чтобы сделать его немного менее подверженным налогообложению на устройстве.
Вы также можете подумать о принятии Matt Gallagher's strategy for cell handling - он останавливает ваш cellForRowAtIndexPath, превращаясь в один длинный, противный набор ifs.
Спасибо, я попробую это. –
Это увеличит объем управления, который вам нужно будет сделать, но может дать вам дополнительную скорость, в которой вы нуждаетесь. – jessecurry
У меня не было времени попробовать этот код, но очевидно, что мне придется делать все переходы самостоятельно (как вы полагаете) вместо того, чтобы полагаться на нормальное поведение. –