IOS - кэширование и загрузка изображений асинхронно
Мне нужна библиотека загрузки изображений и кеширования для iOS, которая
- загружает изображения асинхронно,
- кэширует изображения с настраиваемым размером кеша и поведением LRU,
- проверяет, обновлены ли изображения, используя HTTP HEAD,
- не кэширует ничего в случае кода ошибки или недопустимого изображения.
Я просмотрел HJCache, но он удовлетворяет только первым двум из этих критериев. Есть что-то лучше?
Ответы
Ответ 1
Я знаю, что на этот поток был дан ответ, но я попробовал библиотеку, которая отлично поработала. Раньше я использовал ASIHttpRequest и разница была большой.
https://github.com/rs/SDWebImage
Кроме того, если кому-то нужно изменить размер или обрезать удаленные изображения и иметь те же функции, которые предоставляет SDWebImage, я интегрировал библиотеку SDWebImage с библиотекой UIImage + Resize (по Trevor Harmon) и создал примерный проект. Я модифицировал код SDWebImage для обработки преобразований (обрезка, изменение размера).
Проект доступен на https://github.com/toptierlabs/ImageCacheResize. Не стесняйтесь использовать его!
Ответ 2
EDIT: ASI теперь устарела, но у ответа @Tony есть ссылка на библиотеку, которая, кажется, делает большую часть этого (отказ от ответственности - я еще не пробовал и не согласен с рекомендацией @Tony!)
ASIHTTPRequest делает все это:)
Все, что вам нужно сделать, это добавить что-то вроде обратного вызова успеха
UIImage *image = [UIImage imageWithData:[request responseData]];
// If the image is nil ASIHTTPRequest will let you remove the data from the cache
// but I can't remember off the top of my head how. Checkout the docs!
ИЗМЕНИТЬ
И когда вы закончите, вы всегда можете поместить его на github для остальных из нас.,
Ответ 3
Недавно я взглянул на то, что вы описали - либо общий кеш данных, либо ориентированный на изображение, и не нашел большого интереса. Поэтому вам, возможно, придется сворачивать самостоятельно, чтобы получить все эти функции.
Там разные сообщения в блогах и вещи, детализирующие такие вещи, такие как
http://davidgolightly.blogspot.com/2009/02/asynchronous-image-caching-with-iphone.html.
Я полагаю, вы рассмотрели библиотеку Three20? Я не думаю, что это покроет ваши требования.