iOS多图片下载

Posted 小敏的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS多图片下载相关的知识,希望对你有一定的参考价值。

 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      }

 

以上是关于iOS多图片下载的主要内容,如果未能解决你的问题,请参考以下文章

几个可以直接拿来用的jQuery代码片段

iOS代码片段CodeSnippets

IOS开发-OC学习-常用功能代码片段整理

起底多线程同步锁(iOS)

iOS xcode 代码片段

iOS常用于显示几小时前/几天前/几月前/几年前的代码片段