你的位置:首页 > 操作系统

[操作系统]iOS多图片下载


 

iOS多图片下载、在cell里面下载图片、做了缓存优化。

(app.icon是图片地址)
  // 先从内存缓存中取出图片  UIImage *image = self.images[app.icon];  if (image) { // 内存中有图片    cell.imageView.image = image;  } else { // 内存中没有图片    // 获得Library/Caches文件夹    NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];    // 获得文件名    NSString *filename = [app.icon lastPathComponent];    // 计算出文件的全路径    NSString *file = [cachesPath stringByAppendingPathComponent:filename];    // 加载沙盒的文件数据    NSData *data = [NSData dataWithContentsOfFile:file];        if (data) { // 直接利用沙盒中图片      UIImage *image = [UIImage imageWithData:data];      cell.imageView.image = image;      // 存到字典中      self.images[app.icon] = image;    } else { // 下载图片      [self.queue addOperationWithBlock:^{        // 下载图片、多线程        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];        UIImage *image = [UIImage imageWithData:data];                [NSThread sleepForTimeInterval:1.0];                // 回到主线程显示图片        [[NSOperationQueue mainQueue] addOperationWithBlock:^{          cell.imageView.image = image;        }];                // 存到字典中        self.images[app.icon] = image;        // 将图片文件数据写入沙盒中        [data writeToFile:file atomically:YES];      }];   }