Очистка кеша в приложении SDWebImage для iOS

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

Таким образом, в файле SDImageCache.h фреймворка установлено кэширование изображений на неделю. Это проблематично, если вы пытаетесь часто обновлять изображения, поскольку оно не загружается, если изображение уже кэшировано.

На Stack Overflow я нашел кучу людей с такой же проблемой, но до сих пор решения не работали. К счастью, парень, который придумал это, опубликовал свое решение по очистке кеша изображений: вызовите «[SDWebImageManager.sharedManager.imageCache clearMemory]».

Я поместил этот метод в файл .m моего основного контроллера представления в надежде, что он очистит кеш после вызова изображения, чтобы оно обновилось. Нет игральных костей. Я пробовал это и до ViewDidLoad, надеясь, что это очистит изображение и инициирует загрузку. Опять не повезло.

Любые советы о том, что я делаю неправильно? Вот скриншот моего файла реализации, если это поможет! Это сводит меня с ума. Спасибо!

http://i.imgur.com/pETYL.png


person darkginger    schedule 28.12.2012    source источник
comment
Пожалуйста, не делайте ссылок в своих вопросах о получении быстрой помощи. Здесь люди помогают безвозмездно. Заплатите кому-нибудь, если у вас есть проблемы со шкалой времени. (название отредактировано)   -  person occulus    schedule 29.12.2012


Ответы (2)


Просто следите за тем, если кто-то найдет этот поиск. Чтобы решить эту проблему, вам нужно убедиться, что полный пакет SDWebImage перемещен в вашу папку фреймворка.

В этот момент вы можете найти файл WebImageCache.m и адаптировать его к вашим конкретным потребностям в кэше.

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

Удачи!

person darkginger    schedule 22.01.2013
comment
Я делал это раньше, и это был единственный способ изменить кеширование. Однако вам следует уточнить, какую часть кода вам нужно изменить, чтобы сделать этот ответ полезным для будущих посетителей. - person Carl Veazey; 22.01.2013

Я не знаю, как было в 2012 или 2013 году, но сегодня вы можете просто вызвать передачу нужных вам параметров, например, SDWebImageRefreshCached (учитывает HTTP-заголовок и обновляет изображение, даже если оно уже кэшировано или использует тот же URL-адрес) или SDWebImageCacheMemoryOnly (не кеширует на диск, только в память)

Пример:

NSString *string = @"http://example.com/image.jpg";
[self.customImageView setImageWithURL:[NSURL URLWithString:string]
                     placeholderImage:nil
                              options:SDWebImageRefreshCached
                             progress:nil
                            completed:nil]
person Velociround    schedule 21.05.2015