1.刚刚回去看了看SDWebImage缓存下载图片的东西 感觉用到的地方非常多,所以感觉有必要记录下来和大家分享一下
下面是核心代码和注释:之前需要通过cocoaPods或者手动导入SDWebImage
//获取模型 App *app = self.dataArray[indexPath.row]; cell.textLabel.text = app.name; cell.detailTextLabel.text = app.download; NSURL *url = [NSURL URLWithString:app.icon]; //利用SDWebImage 缓存图片 但是需要处理内存警告 [cell.imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"0.png"] options:SDWebImageRetryFailed | SDWebImageLowPriority progress:^(NSInteger receivedSize, NSInteger expectedSize) { NSLog(@"%.2f",(double)receivedSize / expectedSize); } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { NSLog(@"加载完毕"); }];
这个方法粘贴出来是这样:
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock;
注释:第一个参数是图片的网址,第二个参数是占位图,第三个图片是下载图片的选项,通常用这些:
SDWebImageRetryFailed //下载失败就会一直下载图片
SDWebImageLowPriority //在用户交互的时候 就会暂停下载图片 低优先级
SDWebImageProgressiveDownload //从上往下下载
//**2.然后在AppDelegate.m文件中需要进行内存警告的处理 需要导入SDWebImageManager 这个类
重写这个方法:
/** 当app收到内存警告时 */ - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { //1.取消正在下载的任务 是单例 SDWebImageManager *manager = [SDWebImageManager sharedManager]; [manager cancelAll]; //2.清除缓存就行了 需要manager.imageCache [manager.imageCache clearMemory]; }
//ok!