Многоразовые идентификаторы ячеек по сравнению с возвращением подкласса ячеек? - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю свои ячейки табличного представления в файлах xib, которые я затем регистрирую в своем табличном представлении и возвращаю в cellForRowAt, используя метод tableView.dequeueReusableCell.В редких случаях я создаю ячейки, разбивая их на подклассы и программируя интерфейс вручную. Обычно я просто инициализирую их и возвращаю их из cellForRowAt.

. Недавно я обнаружил, что вы можете зарегистрировать подклассы, используя tableView.register(cellClass: AnyClass?, forCellReuseIdentifier: String).Должен ли я регистрировать свои подклассы и возвращать их через dequeueReusableCell?Каковы преимущества его использования вместо возврата инициализированного подкласса?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вы должны всегда регистрировать ячейку (через код или в раскадровке).Принцип повторного использования является наиболее важным в представлениях iOS Table и Collection.Это означает, что табличное представление рисует и сохраняет в памяти только несколько ячеек, которые в настоящее время видны, + несколько ячеек, которые могут быть видны в ближайшем будущем.Если вы не будете использовать возможность многократного использования, у вас будут большие проблемы с производительностью при большом количестве ячеек.

Также не забудьте очистить интерфейс ячеек в методе prepareForReuse в подклассах ячеек

0 голосов
/ 08 февраля 2019

Да, вы должны воспользоваться системой повторного использования ячеек.Система повторного использования позволяет системе очень быстро реагировать на действия прокрутки на вашем столе.Вместо того, чтобы создавать новую целую ячейку с нуля, система может просто взять уже имеющиеся ячейки и обновить их содержимое.

Обход этой системы путем создания целой новой ячейки каждый раз не является идеальным использованием ресурсов, а использование более сложных ячеек может привести к заметному запаздыванию в вашем табличном представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...