У меня есть UITableView. каждая строка - это тяжелый объект с видео, изображениями и т. д. Когда пользователь просматривает это представление, как я могу освободить память из невидимых строк и загрузить текущие видимые строки?Ячейки UITableView освобождаются, когда не отображаются
ответ
Я предполагаю, что вы говорите об освобождении памяти, которая используется изображениями и видеороликами вашей строки, а не самой строкой.
В вашем Tableview делегат
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
говорит вам, когда TableView скроллинг остановился.
[myTableView indexPathsForVisibleRows]
дает вам массив того, что видно.
Если ваша строка не находится в этом массиве, она не видна, и вы можете сделать очистку изображения/видео на ней.
Вы перерабатываете UITableViewCells согласно рекомендациям Apple? Если нет, вы ДОЛЖНЫ прочитать документы от Apple. Внутри cellForRowAtIndexPath: delegate вы должны иметь что-то [customCell setMediaObjects:]. Внутри класса customCell вы можете освободить все предыдущие объекты mediaObject из памяти.
A Closer Look at Table-View Cells - Apple Documentation
Когда вы звоните dequeueReusableCellWithIdentifier первые 10 (всего десять ячеек могут быть показаны на экране в один момент) клетки будут созданы, то они будут просто загружены и настроены для показа. Итак, ячейки не освобождаются.
Как уже говорилось, вы должны убедиться, что вы правильно перерабатываете ячейки и не уничтожаете вещи, которые вам нужно будет воссоздать, когда ячейка будет повторно использована.
Но вы можете захотеть освободить другие активы, сохраненные ячейкой или ее видами. Или, если у этой ячейки есть какие-либо ожидающие загрузки запросы, например, вы можете сбросить свой приоритет или даже отменить их, когда ячейка вне экрана.
Я думаю, что самый чистый способ сделать это просто переопределить -[UITableViewCell prepareForReuse]
Это называется, когда ячейка помещается обратно в очередь повторного использования. Если пользователь быстро перемещается вверх и вниз по таблице, вы можете не захотеть очищать ячейку до момента, когда ячейка находится вне экрана (например, глядя на indexPathsForVisibleRows).
Но когда ячейка фактически возвращается обратно в очередь повторного использования, это подходящее время для выполнения этой работы, поскольку вы знаете, что ячейка больше не появится на экране, пока вы не удалите ее и не настроите снова.
- 1. Пользовательские ячейки uitableview не отображаются
- 2. Пользовательские ячейки UITableView не отображаются
- 3. Отображаются ячейки прототипа IB UITableView?
- 4. Данные ячейки не отображаются в UITableView?
- 5. Ячейки UITableView отображаются только 1 ячейка
- 6. Почему повторяющиеся ячейки отображаются в UITableView?
- 7. Ячейки не отображаются в UITableViewController
- 8. Ячейки UICollectionView не отображаются, когда API вызывается
- 9. Данные UITableView не отображаются
- 10. Почему не отображаются данные моей ячейки в UITableView?
- 11. Ячейки прототипов отображаются неправильно
- 12. Некоторые ячейки таблицы не отображаются
- 13. Пользовательские ячейки создаются, но не отображаются
- 14. UITableView не отображает ячейки
- 15. Ячейки UITableView не заполняются
- 16. UITableView не показывает ячейки.
- 17. Кнопки UITableView-cell не отображаются
- 18. Неагрессивные ячейки ультрафильтрации не отображаются
- 19. UITableView возвращает пустые ячейки
- 20. Субтитры не отображаются UITableView cell
- 21. данные не отображаются в UITableView
- 22. Почему мои ячейки отображаются пустым в моем UITableView?
- 23. Ячейки UITableView не соответствуют высоте UITableView
- 24. Контроллеры раскадровки не освобождаются
- 25. Связи DataSource не освобождаются
- 26. UITableView не показывает все ячейки
- 27. Зная, когда выполняется UITableView, загружая его ячейки
- 28. UITableView - пользовательские неиспользуемые ячейки
- 29. Цвет ячейки UITableView не исчезает
- 30. Collection View Ячейки не отображаются
использовать повторно используемые ячейки и забыть о работе с памятью (оставьте ее в системе) – samfisher