本篇是 Kingfisher 源码分析的最后一篇,这节主要分析一些笔者认为该库比较主要,且值得学习的点。
image 缓存分为两种:内存缓存和磁盘缓存。在 ImageCache.swift
类中分别有两种实例来处理
// Memory
fileprivate let memoryCache = NSCache<NSString, AnyObject>()
// Disk
fileprivate let ioQueue: DispatchQueue
fileprivate var fileManager: FileManager!
上篇说道 KingfisherManager.swift
下载图片,本篇打开 ImageDownloader.swift
文件看看到底 downloader 是怎么下载图片的
Kingfisher
是一个纯 swift 语言编写的图片处理库,它的很多设计思路借鉴了 OC 版本的 SDWebImage ,但不影响它成为 swift 语言中最好用的图片库。它的源码前后断断续续地阅读了很长时间,每次阅读都感觉能学到很多东西。
runtime
这个老生常谈的话题。Google一下会有不下10几篇的详细介绍 runtime 原理的文章。最近项目中因为埋点上报功能用到了,感觉相当强大。现站在巨人的肩膀上,整理些我认为比较重要的几点吧。
今天提示 Xcode 10 GM 版本出来,也是等了好久,第一时间做了升级,之前装了 beta 版和正式版共存,导致项目中的 protobuf 编译出来的文件有问题,后来就卸载了。这次 Swift 小版本的升级主要优化了编译时间,swift 的编译速度实在是难以忍受..
项目用了 WebViewJavascriptBridge 这个强大的库来实现 JS 和 Swift 交互,已达到原生页面可以和网页进行数据的通讯。前段时间仔细研究了一下它的实现原理,窥探一下这个在 github 上拥有 11K stars 的库的厉害之处,看明白后发现原理其实也很简单,但他的实现思路可谓非常精妙!