Как использовать SDWebImage без кеша для одного экземпляра - PullRequest
7 голосов
/ 06 января 2012

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

Я бы обычно реализовывал это так (в табличном представлении cellForRowAtIndexPath метод).

[cell.imageView setImageWithURL:
[NSURL URLWithString:@"http://asite.com/animage.jpg"] 
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];        

И это загрузило бы кэшированную версию, если бы она была.

А что, если бы я хотел использовать простоту SDWebImage (с заполнителем / надежным кодом загрузки) - но без кеша только в одном месте.

Я знаю, как отключить кеширование в SDWebImage, но не знаю, как бы вы назвали setImageWithUrl: placeholderImage:, чтобы убедиться, что SDWebImage не использует кеш?

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

Ответы [ 5 ]

6 голосов
/ 15 февраля 2012

Я рекомендую отойти от категории в UIImageView и создать собственную версию SDWebImageManager. Вы получили бы больше контроля, если бы вы использовали класс SDImageCache самостоятельно.

Вот и пример прямо из самого SDWebImageManager:

[[SDImageCache sharedImageCache] storeImage:image
                                  imageData:downloader.imageData
                                     forKey:[downloader.url absoluteString]
                                     toDisk:NO];

toDisk, вероятно, где я изменил BOOL на NO, менеджер по умолчанию использует кеширование диска. Вы также можете периодически очищать память для поддержки потоковых изображений:

[[SDImageCache sharedImageCache] clearMemory];

Код SDWebImageManager прост в использовании, и я полагаю, вам не нужно будет заново изобретать большую его часть, всего лишь несколько важных частей в соответствии с вашими потребностями.

4 голосов
/ 30 апреля 2014

Вот, пожалуйста.Убедитесь, что вы получили последнюю версию SDWebImage:

[anImageView setImageWithURL:[NSURL URLWithString:@"http://asite.com/animage.jpg"]
            placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                     options:SDWebImageCacheMemoryOnly];

Из SDWebImageManager.h:

/**
 * This flag disables on-disk caching
 */
SDWebImageCacheMemoryOnly = 1 << 2,
0 голосов
/ 15 февраля 2019
  1. Swift 4.2
  2. Xcode: 10.0
  3. SDWebImage: ~> 4.0

SDImageCache.shared (). Config.shouldCacheImagesInMemory =ложь

0 голосов
/ 08 марта 2018

Вы можете использовать SDWebImageDownloader. Он не кэширует данные.

0 голосов
/ 15 февраля 2017

Вам просто нужно использовать свойство shouldCacheImagesInMemory из SDImageCache и установить для него значение NO. Эта функция доступна в 3.7.4 +.

...