美文网首页
图片缓存

图片缓存

作者: CoderJackieYip | 来源:发表于2016-03-18 18:07 被阅读72次

方案一:无沙盒

  1. 从缓存取图,并显示
  2. 如缓存无图,则下载
  3. 下载完后,存入缓存,并显示

方案二:有沙盒

  1. 从缓存取图,并显示
  2. 如缓存无图,从沙盒取图、显示,并存入缓存
  3. 如沙盒无图,则下载
  4. 下载完后,先存入缓存、显示,再存入沙盒

具体实现

/**
  self.apps = @[app1, app2, app3, ...];
  app1 = @{@"name":@"...", @"icon":@"http://p16.qhimg.com/dr/34_5/fo2489234n34k545l234.png", @"download":@"..."};
**/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   ... ...
   JKYApp *app = self.apps[indexPath.row];
   /**1 先从内存缓存中取出图片 **/
   UIImage *image = self.imageCache[app.icon];
   if (image) { /**2 缓存有,则加载 **/
       cell.imageView.image = image;
   } else {  /**3 缓存无,则下载 **/
       NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];
       cell.imageView.image = [UIImage imageWithData:data];
       /**4 存到字典中 **/
       self.imageCache[app.icon] = cell.imageView.image;
       /**5 存到沙盒中 **/
       //5.1 获取沙盒Library/Caches路径
       NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCacheDirectory, NSUserDomainMask, YES) firstObject];
       //5.2 获取文件名
       NSString *fileName = [app.icon lastPathComponent];
       //5.3 合并为文件全路径
       NSString *file = [caches stringByAppendingPathComponent:fileName];
       //5.4 第二个参数YES(原子性):当文件未写完出错了,则该文件不会残留
       //          NO(费原子性):当文件未写完出错了,则该文件会残留在沙盒
       //5.5 存到沙盒中
       [data writeToFile:file atomically:YES];
   }
}
/*说明:
   沙盒文件结构:
     1. Documents:手机连到itunes后,会自动备份到苹果服务器。注:苹果不允许下载的大文件放在这里,否则,应用将可能被拒绝通过审核。
     2. Library
       - Caches:存放下载的文件
       - Preference:偏好设置
     3. tmp:临时
*/

相关文章

  • 架构&框架

    图片缓存 怎样设计一个图片缓存框架 图片管理者模块:内存缓存模块、磁盘缓存模块、网络图片下载模块 图片处理:图片解...

  • 区分SDWebImage的三种缓存

    SDWebImage的三种缓存分为:内存图片缓存、磁盘图片缓存、内存操作缓存步骤如下1、先查看内存图片缓存,内存图...

  • 多线程03

    SDWebImage框架详解 下载图片并显示: 下载图片/显示图片/内存缓存/磁盘缓存 下载图片\内存缓存\磁盘缓...

  • Android常用开源工具库

    一、图片缓存 Android-Universal-Image-Loader图片缓存,目前使用最广泛的图片缓存,支持...

  • iOS编程之缓存清除以及文件操作等

    1,SDWebImage图片缓存 这里简单讲解以下SDWebImage图片缓存大小计算以及清理缓存的方法 获取图片...

  • Kingfisher清理缓存功能

    我们使用开源项目Kingfisher来实现图片缓存功能。计算图片缓存和清理图片缓存也是通过Kingfisher来实...

  • SDImageCache

    SDImageCache提供了对图片的内存缓存、异步磁盘缓存、图片缓存查询等功能,下载过的图片会被缓存到内存,也可...

  • 6 单图缓存+刷新

    单张图片缓存思路先把图片缓存到本地,再获取图片大小 (GCD调度组监听下载完成) 单张图片缓存进入加载微博列表视图...

  • SDWebImage实现图片展示、缓存、清除缓存

    1.图片显示 2.图片缓存 3.检测缓存照片 4.清理图片缓存 5.下载路径与原理:

  • SDWebImage不缓存图片和不播放Gif

    不缓存图片问题: 使用SDWebImageManager的downloadImage函数下载图片时不缓存图片到沙盒...

网友评论

      本文标题:图片缓存

      本文链接:https://www.haomeiwen.com/subject/qgqhlttx.html