iOS开发之OC语言的开源库分析
YTKNetwork
YTKNetwork是基于AFNetWorking封装的一个网络请求库,相比AFNetworking,YTKNetwork 提供了以下更高级的功能:
- 支持按时间缓存网络请求内容
- 支持按版本号缓存网络请求内容
- 支持统一设置服务器和 CDN 的地址
- 支持检查返回 JSON 内容的合法性
- 支持文件的断点续传
- 支持 block 和 delegate 两种模式的回调方式
- 支持批量的网络请求发送,并统一设置它们的回调(实现在YTKBatchRequest类中)
- 支持方便地设置有相互依赖的网络请求的发送,例如:发送请求A,根据请求A的结果,选择性的发送请求B和C,再根据B和C的结果,选择性的发送请求D。(实现在YTKChainRequest类中)
- 支持网络请求 URL 的 filter,可以统一为网络请求加上一些参数,或者修改一些路径
YTKNetwork 的基本的思想是把每一个网络请求封装成对象。所以使用 YTKNetwork,你的每一个请求都需要继承 YTKRequest 类,通过覆盖父类的一些方法来构造指定的网络请求。

YYCache 设计思路
-
内存缓存 -- YYMemoryCache,相对于 PINMemoryCache 来说,我去掉了异步访问的接口,尽量优化了同步访问的性能,用 OSSpinLock 来保证线程安全。另外,缓存内部用双向链表和 NSDictionary 实现了 LRU 淘汰算法;
-
磁盘缓存 -- YYDiskCache 采用 SQLite 配合文件的存储方式。在存取小数据 (NSNumber) 时,YYDiskCache 的性能远远高出基于文件存储的库;而较大数据的存取性能则比较接近了。但得益于 SQLite 存储的元数据,YYDiskCache 实现了 LRU 淘汰算法、更快的数据统计,更多的容量控制选项;