第三方库
一、AFNetworking
主要组成部分:回话部分、网络监听、网络安全、请求序列化,响应序列号、UIKit的一些集成模块
主要结构为:AFURLSessionManager(父类AFHTTPSessionManager,集成了NSURLSession,AFSecurityPolicy,AFNetworkReachablityManager)->AFURLRequestSerialzation、AFURLResponseSerialzation
AFURLSessionManager:创建和管理NSURLSession和NSURLSessionTask,实现NSURLSessionDelegate等协议的代理方法,用来处理一些网络数据的重定向、认证添加、网络响应数据的处理,引入AFSessionPolicy用来做证书校验等保证请求安全,引入AFNetworkReachabilityManager对网络状态进行监控
二、SDWebimage
主要组成部分:封装更多的是UIKit的一些方法,由SDWebManager核心类来管理,在此之下有SDImageCache用来处理内存、磁盘缓存,SDWebImageDownloader负责图片的下载。
加载图片的流程:通过url做完key去分别去内存、磁盘缓存去查找,如果没找到去网络下载
三、ReactiveCocoa
RAC是一个函数响应式编程的第三方框架,通过信号和订阅来实现。其中的核心类为RACSignal(父类RACStream)由RACDynamicSignal、RACReturnSignal、RACEmptySignal、RACErrorSignal构成
信号代表一连串的状态,在状态改变时对应的订阅者RACSubscriber就会收到通知执行相应的指令
订阅流程 start->RACSignal->-subscribeNext:->RACSubscriber->-sendNext:->-sendCompleted,产生RACSubscriber时在内部持有了一个成员变量,这个成员变量其实是didSubscribe的block,当我调用了subscribeNext的方法时其实就是调用了对应的block。
四、ASyncDisplayKit
主要通过减轻主线程的压力,把能用子线程做的事情尽量用子想吃去做。减少耗时运算主要包括,文本宽高计算、视图布局计算,来腾出更的时间来相应用户的UI交互,其次是异步渲染,包括文本渲染、图片解码、图像绘制,再者是对UIKit对象的管理,比如对象的创建、调整、销毁。
【第三方库】基本原理 NSNode-UIVIew-CALayer,NSNode的操作可以放到子线程中去做,CALayer只能在主线程处理,对UIView的相关修改和提交最终落地到NSNode,之后也会模仿系统的CAAnimation提交CALayer的needDisplay这种形式把内容提交到一个全局容器中。通过RunLoop注册一个观察者来监听beforwaiting,然后把全局容器中NSNode的内容提取出设置给对应的UIView。
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- android第三方框架(五)ButterKnife
- 开学第一天(下)
- 一个人的碎碎念
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 太平之莲
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育