Где кэшировать удаленные файлы изображений в iOS? - PullRequest
9 голосов
/ 12 мая 2011

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

У меня есть два варианта:

  1. Либо для кэширования изображений в виде файла и использовать его при необходимости.
  2. Кэшируйте объекты изображений в памяти и используйте их при необходимости и записывайте в файлы при выходе из приложения.

Какой из них будет лучше?

Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения относительно кэширования изображений.

Ответы [ 5 ]

8 голосов
/ 12 мая 2011

Ваш второй подход имеет 2 основных недостатка:

  1. Если изображений слишком много, ваше приложение получит предупреждение о нехватке памяти, и вам все равно придется избавляться от изображений из памяти
  2. Также не рекомендуется сохранять все изображения в файл при выходе из приложения - не гарантируется, что ваш код сохранения завершится при выходе из приложения (например, если это займет слишком много времени, система может просто завершить работу вашего приложения, и ваши изображения будут потеряны)

Я бы посоветовал сохранять изображения в файлы сразу после их загрузки и хранить в памяти разумное количество изображений, которые необходимо показать без видимой задержки (загрузка дополнительных изображений при необходимости и удаление ненужных)

4 голосов
/ 12 мая 2011

Я бы сделал это так: Иметь NSMutableDictionary с кэшированными изображениями (как объекты UIImage).Если изображение отсутствует в кэше, посмотрите, доступно ли оно в виде файла.Если он недоступен в виде файла, загрузите его, поместите в словарь и запишите в файл.

Что касается , где , для записи файлов: вы можете использовать NSTeditionalDirectory () или создайте каталог внутри NSLibraryDirectory (используйте NSSearchPathForDirectoriesInDomains для его поиска).Последнее имеет преимущество / недостаток, заключающееся в том, что оно будет в резервной копии iTunes (будет ли это преимуществом или нет, зависит от варианта использования).Использование каталога «Библиотека» - это рекомендуемый Apple способ хранения данных, для которых выполняется резервное копирование, но которые не отображаются в папке обмена файлами iTune (каталог «Документы»).

4 голосов
/ 12 мая 2011

Я бы порекомендовал вам первый вариант.Оставляет вам больше гибкости, например, когда размер данных увеличивает объем памяти.

2 голосов
/ 28 ноября 2012

Для решения для кэширования изображений на платформе iOS вы можете рассмотреть возможность использования платформы SDWebImage по адресу: https://github.com/rs/SDWebImage. Это очень легко интегрировать и позаботится обо всех ваших проблемах с кэшированием изображений. Узнайте больше о работе здесь: https://github.com/rs/SDWebImage#readme

Мы недавно подобрали это для нашего приложения, и оно прекрасно работает.

2 голосов
/ 12 мая 2011

Я начал использовать EGOImageView для обработки моего кэширования; он очень универсален и обрабатывает все сложности кеширования.

Он очень хорошо работает для загрузки изображений через http, вы можете найти его на сайте разработчиков EGO здесь

http://developers.enormego.com/

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