NSCache с сотнями изображений

Я получил collectionView, который отображает 9 изображений (200x300px) одновременно. Общее количество может доходить до сотен.

В настоящее время я проверяю в cellForItem, если изображение находится в кеше. Если нет, я загружу его из файловой системы и положу в кеш.

Проблема: в первый раз, когда я прокручиваю коллекцию, она пропускает кадры, потому что она все еще загружает изображения из файловой системы. После первой прокрутки масло становится гладким. (Это на 5 с)

Мне было интересно, будет ли хорошей практикой предварительно загружать все (или первые x) изображения в кэш?

Я не вижу большой проблемы с 5s, но боюсь, что она сломает старое оборудование.

Какие-нибудь мысли?

2 ответа

Решение

Попробуйте выполнить механизм загрузки дисков в фоновом режиме. Вы можете настроить очередь с NSOperationQueue, заполненной операциями загрузки.

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

Вы смотрели на SDWebImage? его уже содержат an asynchronous memory + disk image caching with automatic cache expiration handling

А также, я обычно предварительно загружаю все изображения, чтобы избежать мерцания

Другие вопросы по тегам