willDisplayCell
называется , когда ячейка собирается отображаться и подлежит обработке в угловых случаях разработчика с точки зрения повторного отображения, и т. Д. c. Он предназначен для выполнения дешевых операций обновления состояния в рассматриваемых ячейках, а не для предварительной выборки данных.
prefetchRowsAt
, с другой стороны, вызывается задолго до времени и позволяет вам ' передышка », чтобы запустить потенциально дорогие операции, от которых зависят ваши клетки.
Документы для prefetchRowsAt
состояния :
Табличное представление вызывает этот метод в основной очереди отправки, когда пользователь выполняет прокрутку, предоставляя пути индекса для ячеек , которые он может отобразить в ближайшем будущем .
Используйте реализацию этого метода для запуска любых дорогостоящих операций загрузки данных. Всегда загружайте данные асинхронно и отправляйте результаты в объект источника данных вашей таблицы. Табличные представления не вызывают этот метод для ячеек, которые им требуются немедленно, поэтому ваш объект источника данных также должен иметь возможность извлекать сами данные.
Операции предварительной выборки также могут быть отменены с помощью UITableView
, когда он вызывает функцию tableView(_, cancelPrefetchingForRowsAt:)
в вашем источнике данных.
Так что, да, есть большая разница. Один вариант требует гораздо больше работы, чем другой.