Основные причины заиканий или лагов при прокрутке UITableView:
cellForRowAt — выполнение обработки изображений или сетевых запросов прямо внутри этого метода блокирует главный потокdequeueReusableCell(withIdentifier:) приводит к ненужному выделению памяти при каждой прокруткеИспользуй Instruments для выявления первопричины:
Core Animation instrument — показывает потерянные кадры и выделяет узкие места рендеринга, такие как смешанные слои и рендеринг за пределами экранаTime Profiler instrument — показывает, какие методы потребляют больше всего процессорного времени на главном потоке во время прокруткиDispatchQueue.global()UIImage, чтобы избежать повторного декодированияlet cell = tableView.dequeueReusableCell(withIdentifier: "CellID", for: indexPath)
Сначала профилируй, потом оптимизируй — всегда сначала измеряй, чтобы убедиться, где находится реальное узкое место.
Изображения по умолчанию декодируются синхронно на main потоке в Swift, что может вызывать проблемы с частотой кадров при прокрутке UITableView.
Новый — ещё не проверен сообществом
Вы