Kingfisher

ima1.kf.setImage(with: url)

为了兼容macOS, IOS

通过协议定义了kf,实际上就是本身

KingfisherOptionsInfo

可以配置一些设置

eg:只从内存中取,内存中没有就直接下载

eg:直接下载最新的

1内存中,2磁盘中,下载最新的缓存到内存和磁盘

存在磁盘中的是image转成的data

在内存中存的的是NSCache

1.NSCache类结合了各种自动删除策略,以确保不会占用过多的系统内存

如果其它应用需要内存时,系统自动执行这些策略

当调用这些策略时,会从缓存中删除一些对象,以最大限度减少内存的占用。

2.NSCache是线程安全的,我们可以在不同的线程中添加、删除和查询缓存中的对象,而不需要锁定缓存区域。

不像NSMutableDictionary对象,一个缓存对象不会拷贝key对象。

NSCache [key:value(StorageObject对象里边有属性key,属性value)]

怎么就存在内存里了

通过一个单利对象存储,单利中有属性memoryStorage,里边有个NSCache

KingfisherManager.shared

1.增加了一个清楚内存缓存的策略

通过一个定时器定期清除过期的缓存,默认为2分钟(可以设定)清理一次

删除缓存时间大于5分钟(可以设定)的对象,保证了一个对象在内存中存在时间是5到7分钟

2.默认的缓存对象最大个数是无限大

3.内存大小的celue

// Bitmap memory cost with bytes. 计算每个图片的大小B

var cost: Int {

let pixel = Int(size.width * size.height * scale * scale)

guard let cgImage = cgImage else {

return pixel * 4

}

return pixel * cgImage.bitsPerPixel / 8

}

最大占用内存数totalCostLimit 是 物理内存的1/4

let totalMemory = ProcessInfo.processInfo.physicalMemory

let costLimit = totalMemory / 4

二 disk磁盘中缓存策略

每次进入后台时,和将要推出应用时  清理7天(可以设置)之前的缓存,如果缓存大于设定值的最大值则删除最早缓存的data

磁盘中存取的是data

有关其中的缓存的key    是url  如果url中不包含具体图片的名称,但后台更改图片但是url地址不变时不会加载中新图片

在cell中的label设置为自适应,设置好约束,tableView代理方法中不要给cell高度,cell的高度会根据label文字的高度确定

最新文章

  1. eclipse报错:Failed to load the JNI shared library
  2. 一个App完成入门篇(一)-从Hello world开始
  3. Ibatis学习总结5--动态 Mapped Statement
  4. (转)js:字符串(string)转json
  5. P2409 Y的积木
  6. IE6/IE7下:inline-block解决方案
  7. 今天收到报警邮件,提示网站502 bad gateway,
  8. dense_rank()+hash提示改写优化SQL
  9. windows7 spark单机环境搭建及pycharm访问spark
  10. linux 启动 oracle数据库
  11. OC中对象元素的引用计数 自动释放池的相关概念
  12. 公钥\私人 ssh避password登陆
  13. Object.defineproperty实现数据和视图的联动 ------是不是就是 Angular 模型和视图的同步的实现方式???
  14. 系统里有Courier New字体 Eclipse没有这个字体选项
  15. ACM 第十一届 河南省省赛A题 计划日
  16. 微信小程序问题---数据传输长度为 1275870 已经超过最大长度 1048576
  17. docker 2(local registry)
  18. CF1056E Check Transcription 字符串哈希
  19. redmine一键安装(项目管理、Bug管理、任务跟踪、代码管理、日报等等)
  20. 2018.11.16 bzoj4827: [Hnoi2017]礼物(ntt)

热门文章

  1. zabbix分布式监控服务 安装与配置
  2. HDU1517 Multiply Game
  3. A.Math Problem
  4. JavaEE基础(04):会话跟踪技术,Session和Cookie详解
  5. 【Nodejs】392- 基于阿里云的 Node.js 稳定性实践
  6. JS基础-this
  7. 【Element UI】使用问题记录
  8. Elasticsearch系列---搜索分页和deep paging问题
  9. java8-date和timeAPI
  10. 《Java基础知识》动态代理(InvocationHandler)详解