第三方库
- AFNetworking
- SDWebImageView
- ReactiveCocoa
- AsyncDisplayKit
AFNetworking
- iOS客户端的第三方网络框架
- git.com/AFNetworkin…
框架图
主要类关系图(核心类:AFURLSessionManager)
AFURLSessionManager
-
创建和管理NSURLSession、NSURLSessionTask
-
实现NSURLSessionDelegate等协议的代理方法
-
引入AFSecurityPolicy保证请求安全
-
引入AFNsetworkReachabilityManager监控网络状态
-
发送一个Get方式的HTTP请求(源码解析)
SDWebImage
- 一个异步下载图片并且支持缓存的框架
- github.com/rs/SDWebIma…
架构简图
加载图片流程
ReactiveCocoa
- 函数响应式编程框架
- github.com/ReactiveCoc…
信号
- ReactiveCocoa中的核心类RACSignal
- 信号代表一连串的状态
- 在状态改变时,对应的订阅者RACSubscriber就会收到通知执行相应的命令
- RACReturnSignal
- RACDaynamicSignal
订阅
- RACSubscriber
{
[RACSignal return:@3];
[RACSignal subScribedNex:^(id x){
NSLog(@"%@",x);
}];
}
AsyncDisplayKit
- 提升iOS界面渲染性能的一个框架
- github.com/facebookarc…
主要处理问题(把主线程的任务分派到子线程)
基本原理
- 针对ASNode的修改和提交,会对其进行封装并提交到一个全局容器中
- ASDK也在RunLoop中注册了一个Observer
- 当RunLoop进入休眠前,ASDK执行该loop内提交的所有任务。
第三方库面试总结
- AFNetworking的整体结构是怎样的?
- SDWebImage框架是怎样加载图片的?
- RAC的信号订阅是什么意思?
- ASDK的实现原理是怎样的?