iOS | SDWebImage更新头像问题

问题:

在iOS_App应用中,使用SDWebImage异步网络加载头像可能会遇到此问题:  如果用户上传更新了头像,加载头像的URL不做变化,会导致更新用户的头像无法更新为最新的

原因: 

SDWebImage缓存图像会优先从内存读取用户头像,如果内存中没有会从沙盒(也就是硬盘)中读取,如果沙盒中也没有,才会异步从网络上请求头像,如果头像已经存在沙盒或者内存中,SDWebImage就不会从网络上请求,而是加载本地的,会导致头像无法更新



解决办法一(失效):

在加载图像的时候,使用

sd_setImageWithURL:<#(NSURL *)#> placeholderImage:<#(UIImage *)#> options:<#(SDWebImageOptions)#>

注意:options参数改为:SDWebImageRefreshCached    



解决办法二(有效):

方法一之前的版本是有效的,目前只更新此参数无效,需要配合更改 SDWebImage框架内代码,如下

if (image && options & SDWebImageRefreshCached) {

// force progressive off if image already cached but forced refreshing

downloaderOptions &= ~SDWebImageDownloaderProgressiveDownload;

// ignore image read from NSURLCache if image if cached but force refreshing

downloaderOptions |= SDWebImageDownloaderIgnoreCachedResponse;

}

替换为如下代码:

if(image && options &SDWebImageRefreshCached) {

// force progressive off if image already cached but forced refreshing

downloaderOptions &= ~SDWebImageDownloaderProgressiveDownload;

// remove SDWebImageDownloaderUseNSURLCache flag

downloaderOptions &= ~SDWebImageDownloaderUseNSURLCache;

// ignore image read from NSURLCache if image is cached but force         refreshing

downloaderOptions |=SDWebImageDownloaderIgnoreCachedResponse;

}

通过修改框架内代码,可以解决头像更新问题....

你可能感兴趣的:(iOS | SDWebImage更新头像问题)