多图片下载综合案例-磁盘缓存处理

思路:

(1)在显示图片前,先检查是否有内存缓存;

(2)有内存缓存,直接使用;

(3)如果没有内存缓存,再去检查是否有磁盘缓存;

(4)有磁盘缓存,直接使用 + 保存 一份到内存中(以后使用方便)

(5)没有磁盘缓存,就判断是否已经在下载了,如果没有下载,就开启线程下载;如果已下载,就下载图片并显示出来 + 保存一份到内存中 + 保存到磁盘

其中,内存有三种:

  Doc:不允许,否是上架会被拒

  Lib:

    cache:图片缓存放在这里

    偏好设置

  tmp:临时存储路径,随时可能被删除

//获取缓存的路径并缓存图片:
- (void)getCachePath:(NSString *)imageUrl {
    //获取文件的名称
    NSString *fileName = [imageUrl lastPathComponent];  //得到该路径的最后一个节点
    //获取cache路径
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    //拼接路径
    NSString *fullPath = [cachePath stringByAppendingString:fileName];
    //获取图片的数据
    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]];
    //图片数据写入缓存中
    [imageData writeToFile:fullPath atomically:YES];
}
原文地址:https://www.cnblogs.com/lyz0925/p/11498201.html