第三方库

98 阅读1分钟

第三方库

  • AFNetworking
  • SDWebImageView
  • ReactiveCocoa
  • AsyncDisplayKit

AFNetworking

框架图

image.png

主要类关系图(核心类:AFURLSessionManager)

image.png

AFURLSessionManager
  • 创建和管理NSURLSession、NSURLSessionTask

  • 实现NSURLSessionDelegate等协议的代理方法

  • 引入AFSecurityPolicy保证请求安全

  • 引入AFNsetworkReachabilityManager监控网络状态

  • 发送一个Get方式的HTTP请求(源码解析)

SDWebImage

架构简图

image.png

加载图片流程

image.png

ReactiveCocoa

image.png

信号
  • ReactiveCocoa中的核心类RACSignal

image.png

image.png

  • 信号代表一连串的状态

image.png

  • 在状态改变时,对应的订阅者RACSubscriber就会收到通知执行相应的命令
  • RACReturnSignal
  • RACDaynamicSignal
订阅
  • RACSubscriber

image.png

image.png

{
[RACSignal return:@3];
[RACSignal subScribedNex:^(id x){
NSLog(@"%@",x);
}];
}

AsyncDisplayKit

主要处理问题(把主线程的任务分派到子线程)

image.png

基本原理

image.png

  • 针对ASNode的修改和提交,会对其进行封装并提交到一个全局容器中
  • ASDK也在RunLoop中注册了一个Observer
  • 当RunLoop进入休眠前,ASDK执行该loop内提交的所有任务。

第三方库面试总结

  • AFNetworking的整体结构是怎样的?
  • SDWebImage框架是怎样加载图片的?
  • RAC的信号订阅是什么意思?
  • ASDK的实现原理是怎样的?