【无限互联】SDWebImage图片缓存流程分析【DOC精选】.docVIP

  • 3
  • 0
  • 约6.98千字
  • 约 4页
  • 2017-02-16 发布于江苏
  • 举报

【无限互联】SDWebImage图片缓存流程分析【DOC精选】.doc

【无限互联】SDWebImage图片缓存流程分析【DOC精选】

【无限互联】SDWebImage图片缓存流程分析 SDWebImage是一个功能很强大的缓存网络图片的框架。框架实现了异步加载网络图片、自动缓存图片数据等功能。以UIImageView加载网络图片为例,对其总体的加载图片流程做一个大致的分析。 首先使用SDWebImage先要导入 #import UIImageView+WebCache.h文件,设置网络图片的图片地址就可以加载图片。 [objc] view plaincopyprint? NSURL *url = [NSURL URLWithString:@/imag1e03d003478ec54e736d196f9.jpg]; [imageView setImageWithURL:url]; NSURL *url = [NSURL URLWithString:@/imag1e03d003478ec54e736d196f9.jpg]; [imageView setImageWithURL:url]; 根据网络图片地址,SDWebImageManager类提供了方法downloadWithURL加载图片 [objc] view plaincopyprint? id SDWebImageOperation operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) { if (!wself) return; dispatch_main_sync_safe(^{ if (!wself) return; if (image) { wself.image = image; [wself setNeedsLayout]; } if (completedBlock finished) { completedBlock(image, error, cacheType); } }); }]; objc_setAssociatedObject(self, operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } id SDWebImageOperation operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) { if (!wself) return; dispatch_main_sync_safe(^{ if (!wself) return; if (image) { wself.image = image; [wself setNeedsLayout]; } if (completedBlock finished) { completedBlock(image, error, cacheType); } }); }]; objc_setAssociatedObject(self, operationKey, operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } 进入downloadWithURL方法,由SDImagerCache类提供方法queryDiskCacheForKey检查内存中是否有图片缓存,如果有图片缓存,回调block将图片数据传递给SDWebImageManger类。SDWebImageMange类回调block将图片数据传递给UIImageView+WebCache类去显示图片。 [objc] view plaincopyprint? UIImage *image = [self imageFr

文档评论(0)

1亿VIP精品文档

相关文档