1 iOS多图片下载、在cell里面下载图片、做了缓存优化。
2
3 (app.icon是图片地址)
4
5 // 先从内存缓存中取出图片
6 UIImage *image = self.images[app.icon];
7 if (image) { // 内存中有图片
8 cell.imageView.image = image;
9 } else { // 内存中没有图片
10 // 获得Library/Caches文件夹
11 NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
12 // 获得文件名
13 NSString *filename = [app.icon lastPathComponent];
14 // 计算出文件的全路径
15 NSString *file = [cachesPath stringByAppendingPathComponent:filename];
16 // 加载沙盒的文件数据
17 NSData *data = [NSData dataWithContentsOfFile:file];
18
19 if (data) { // 直接利用沙盒中图片
20 UIImage *image = [UIImage imageWithData:data];
21 cell.imageView.image = image;
22 // 存到字典中
23 self.images[app.icon] = image;
24 } else { // 下载图片
25 [self.queue addOperationWithBlock:^{
26 // 下载图片、多线程
27 NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];
28 UIImage *image = [UIImage imageWithData:data];
29
30 [NSThread sleepForTimeInterval:1.0];
31
32 // 回到主线程显示图片
33 [[NSOperationQueue mainQueue] addOperationWithBlock:^{
34 cell.imageView.image = image;
35 }];
36
37 // 存到字典中
38 self.images[app.icon] = image;
39 // 将图片文件数据写入沙盒中
40 [data writeToFile:file atomically:YES];
41 }];
42 }