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];

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容