2012-01-02 3 views
2

Я уже использую AFNetworking для загрузки изображений async. Мне было интересно, есть ли способ для хранения на диске или Core Data, следует ли мне изучить SDWebImage? Или вы предложите создать собственное решение. В принципе, я хотел бы иметь очень прозрачный способ получить изображения с URL-адреса, поэтому сначала найдите их в NSCache, если не найдете внешний вид на диске (или Core Data) l, если не нашли снова загрузите async. Спасибо за любую идеюЕсть ли рамки для кэширования изображений на iOS?

+0

Не совсем дублированный вопрос, но он же здесь: http://stackoverflow.com/questions/1130089/lazy-load-images-in-uitableview –

+0

SDWebImage очень удобен, особенно при загрузке прогрессивного изображения. Но он основан на ** NSUrlConnection ** (даже в последней версии 3.7.5), и мы знаем, что это устарело, начиная с iOS 9. NSUrlSession существует уже 3 года, и я думаю, что будущим победителем будет один который реализует NSUrlSession. ** AFNetworking 3.0 ** полностью основан на NSURLSession. Поэтому я думаю, что Afnetworking будет лучшим выбором, чем SDWebImage. –

ответ

2

SDWebImage доказал, что действительно твердая реализация асинхронного изображения выборки и кэширования.

Если вы используете свои веб-образы для кнопок или изображений, вы можете даже вызвать методы -(void)setImageWithURL:(NSURL *)url, которые будут проверять кеш, получить изображение для вас, и если его там нет, он будет асинхронно загружать его и хранить в кеш, прежде чем устанавливать его.

Если вам нужны изображения для некоторых других вещей, вы можете извлечь выгоду из этой библиотеки по телефону:

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 

// Remove in progress downloader from queue 
[manager cancelForDelegate:self]; 

[manager downloadWithURL:yourURL delegate:self options:0]; 

и получения изображения позже на методе делегата:

- (void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image 
{ 
    // Do something with the image 
} 

Заметим, что

- (void)downloadWithURL:(NSURL *)url delegate:(id<SDWebImageManagerDelegate>)delegate options:(SDWebImageOptions)options 

проверяет кеш перед загрузкой, так что это s afe, чтобы называть это каждый раз, когда вам нужно изображение.

+0

SDWebImage основан на ** NSUrlConnection **, который устарел, начиная с iOS 9. AFNetworking 3.0 использует NSURLSession. Теперь я думаю, что сейчас будет AFNetworking! –

0

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