Какая библиотека кэширования изображений для iOS?

Я создаю приложение фотоальбома и нахожу несколько библиотек кэширования изображений, а именно:

Что вы рекомендовали бы (или другие библиотеки не в списке)? Я ищу:

  • Эффективность
  • Минимальные усилия с точки зрения сбора мусора
  • Поддержка предпочтительных блоков

Спасибо

Ответы

Ответ 1

Лично я считаю, что SDWebImage является лучшим, потому что это абсолютное решение без усилий и обеспечивает простейший механизм обработки кеша поскольку это просто расширение класса UIImageView.

Ответ 2

Загрузка и кеширование изображений async - непростая задача. Это нужно сделать хорошо, иначе это победит его цель. Поэтому я настоятельно рекомендую, чтобы в итоге вы создали свой собственный. Сказав это, мне нужно было быстрое и простое решение, чтобы продвинуться вперед в разработке моего приложения.

Я нашел эти решения:

Я попробовал HJCache, но при обработке больших изображений (1.5M +) он не показывал отличную производительность прокрутки. Для небольших изображений он отлично работал. Пробовал и LazyTableImages, но интеграция была не простой.

В конечном итоге я выбрал SDWebImage. Интеграция не может быть проще. После того, как вы связали библиотеку с вашим проектом, вам нужно всего лишь:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

в tableView:cellForRowAtIndexPath:.

Дополнительно:

  • Также работает с пользовательскими ячейками
  • Не блокирует пользовательский интерфейс
  • Предлагает отличную производительность прокрутки.
  • Загрузка и кеширование изображений бесшовны.

Ответ 4

Попробуйте также APSmartStorage. Он автоматически кэширует UIImage/NSData на диске или в памяти.

Он имеет симпатичный API-интерфейс в стиле блоков,

    // setup data parsing block
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url)
{
    return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale];
};
...
// show some progress/activity
...
// load object with URL
[APSmartStorage.sharedInstance loadObjectWithURL:imageURL callback:(id object, NSError *error)
{
    // hide progress/activity
    if (error)
    {
        // show error
    }
    else 
    {
        // do something with object
    }
}];

Это довольно умный и все еще простой:

enter image description here

Ответ 5

Я попытался использовать SDWebImage.

Согласился, что его очень легко интегрировать.

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

Библиотека все еще находится в разработке, но они не выбирают это ограничение.

Ответ 6

Я настоятельно рекомендую вам попробовать Kingfisher и SDWebImage. Оба прекрасно работают для загрузки и кэширования изображений из Интернета.

Ответ 7

Моа

Moa - это библиотека загрузки изображений, написанная в Swift. Он позволяет загружать и показывать изображение в представлении изображения, установив его свойство moa.url.

Установка Используйте CocoaPods для добавления Moa в ваш проект. Просто добавьте следующую строку в свой подфайл.

pod 'moa', '~> 8.0'