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



uiimage cache (5)

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

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

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

благодаря



Answer #2

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


Answer #3

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

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

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

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


Answer #4

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

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

Я попробовал 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:

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

  • Работает также с пользовательскими ячейками
  • Не блокирует пользовательский интерфейс
  • Отличная прокрутка
  • Загрузка и кеширование изображений осуществляется без сбоев.

Answer #5

Попробуйте также 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
    }
}];

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





uiimage