У меня есть представление коллекции, заполненное большим количеством данных с сервера:
Структура ячейки:
- Одно изображение
- И 2 строки текста в каждой ячейке
По сути, мой макет коллекции похож на 3 ячейки в одной строке (несколько строк) с закругленными углами и тенями.Проблема, с которой я сталкиваюсь, заключается в том, что при получении более 30 продуктов, полученных от сервера, использование памяти увеличивается до 200 МБ, а на старых устройствах (iOS 10. *) экран с задержкой просмотра коллекции.
Способ, которым яПолучаю данные:
- В
Interactor
Я запрашиваю все текстовые данные продуктов вместе со ссылками на файлы изображений, В моем представлении коллекции cellForItemAt
Iотобразить эти данные и там я начинаю загружать изображения с помощью этой библиотеки - Kingfisher
if url != nil {
productsCell.productImage.kf.indicatorType = .activity
productsCell.productImage.kf.setImage(with: url)
} else {
productsCell.productImage.image = clipImage
}
Размер получаемых изображений варьируется от 4-6 Мб.
Я использую VIPER в качестве архитектуры моего приложения и проверил на утечки памяти, но все вроде бы хорошо.Когда я запускаю приложение на других экранах, мое использование памяти составляет около - 30 МБ.Поэтому главная проблема, с которой я сталкиваюсь, - это загрузка данных изображения.Я дал Googled и прочитал много статей об оптимизации, но они дают в основном общие советы и не отражают такой случай, как у меня здесь.Они предлагают:
- Использование принципов управления памятью - выполнено
- Разбиение на страницы - нет
Во время тестирования я обнаружил, что если я заполнил представление коллекциисо статичным изображением клипа - использование памяти уменьшается до ± 100 МБ
Я хотел бы спросить:
- Есть ли какие-либо готовые решения для представлений коллекции, которые уже оптимизированы для обработкимного данных изображения?Я искал github, но большинство фреймворков коллекций связано с макетами Cutom.
- Как уменьшить использование памяти при работе с большим количеством данных?
- Может ли размер изображения вызывать такую нагрузку на память?
- Могу ли я избежать использования нумерации страниц, так как представление коллекции повторно использует ячейки?
Заранее спасибо за помощь и хороших выходных!