Подтвердить что ты не робот

Кэш очистки SDWebImage

Я показываю список значков, загруженных из Интернета, с текстом в виде таблицы. Значки можно изменить на стороне сервера, и мне нужно их заменить, как только появятся новые значки. Я пытаюсь использовать следующий код:

[imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly];

И вызовите [[SDImageCache sharedImageCache] clearMemory]; В моем обратном вызове refresh, но он не очищает содержимое кеша. Более того, даже если я закрою приложение и снова открою его, изображение все еще там.

Я нашел только один способ очистки кеша, и это вызвано [[SDImageCache sharedImageCache] clearDisk];. Это работает только после закрытия и повторного открытия приложения.

Как заставить SDWebImage не использовать кеширование диска?

4b9b3361

Ответ 1

SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];

Не забудьте также поставить эти строки кода в свой didReceiveMemoryWarning.

Ответ 2

Находите источник, если проблема. Кажется, меня обманул шаблон Singleton, используемый в SDImageCache. Кэш для расширения, который используется над UIImageView, управляется SDWebImageManager, у которого есть переменная экземпляра SDImageCache. Если вы хотите очистить кеш для расширения, вы должны вызвать его методы imageCache, такие как clearDisk и clearMemory.

Ответ 3

За исключением методов SDImageCache, я настоятельно рекомендую вам проверить URL-адреса изображений. В моей ситуации я пробовал каждый метод для ImageCache, и проблема с памятью продолжалась. Аварии происходили в основном на iPhone 4s из-за аппаратного обеспечения, с которым он не мог справиться.

Основная проблема: url ampersand encoding!

В примере, проверьте эти URL: первый url использует "& amp" , а второй - нет. Из-за амперсанда моя библиотека JSON не может прочитать значение ширины и ширины, которое будет намного выше, чем должно быть. Вот почему у меня была проблема с памятью.

1)/select.php?imageid=101961221 "& amp" ; width = 100 "& amp" ; isWatermarked = true

2)/select.phpimageid=101961221&width=100&isWatermarked=true

Кроме того, последние версии библиотеки SDWebImage включают класс UIImageView+WebCache.h, и он действительно прекрасно справляется с проблемами кеша.