iOS晋级知识汇总(七)第三方库

2019-07-11  本文已影响0人  struggle3g

第三方库

AFNetworking

iOS客户端的第三方网络框架,代码地址

架构图

AFNetworking的架构图.png

AFURLSessionManager

类的关系

AFN类的关系.png

SDWebImageView

架构图

SDWebImage的架构图.png

缓存流程

SDWebImageView的缓存流程.png

Reactive Cocoa

函数响应式编程框架,源代码地址

函数式编程它的核心思想是,它是一种将程序看成是数学方法的求值、不会改变状态、不会产生副作用(后面我们马上会谈到)的编程方式

响应式编程

RAC库是否了解

信号

如何理解信号

核心思想是RACSignal继承RACStream,RACStream的提供了方法:empty、return、bind、concat、zipWith这些都是抽象的函数,RACStream分类中有一些方法:map、take、skip、ignore、filter。。这些函数是对上述提供的抽象函数的不同组合逻辑。

什么是信号
信号代表一连串的状态,在状态改变时,对应的订阅者RACSubscriber就会收到通知,执行响应的指令。

什么是信号.png

订阅

RACSubscriber订阅者,订阅的流程:

RAC如何使用订阅.png

把传进来的Block参数,作为这个信号的成员变量保存下来,比如[nal subscribeNext:^(id _Nullable x) {}]

产生了RACSubscriber的类时候,在内部持有一个成员变量,内部的变量是didSubscribe的这个block,当调用RACSignal 的方法的时候,实际上就是执行内部保存的block;

RAC订阅的原理.png

例子分析:

RACSignal *nal = [RACSignal return:@3];
[nal subscribeNext:^(id  _Nullable x) {}];

RACSignal *nal = [RACSignal return:@3]分析

+ (RACSignal *)return:(id)value {
    return [RACReturnSignal return:value];
}
RACReturnSignal *signal = [[self alloc] init];
signal->_value = value;
return signal;

[nal subscribeNext:^(id _Nullable x) {}]的分析

AsyncDisPlayKit

提升iOS界面渲染性的一个框架,代码地址

减轻主线程压力,把事情能放入到子线程的就放入到子线程,主要分为三个方面:

ASDK实现原理

UIView作为CALyaer的一个delegate,CALyaer作为UIView的一个成员变量负责UIView的展示工作,ASDK在此之上封装了一个NSNode类,而这个类当中会有一个.view或者一个成员变量,可以生成一个view,同时每一个uiview都有一个.node的一个属性可以获取到它所对应的节点。

UIView、CALayer和NSNode、UIView的区别是?
NSNode、UIView中的NSNode是可以放入到后台线程去处理的。是线程安全的。
而UIView和CALayer包括UIKit的内容都是在主线程上做的。

NSNode对UIView进行了一次包装,包括文本宽高计算、视图布局计算、文本渲染、图片解码、徒刑绘制、对象的创建、对象调整、对象销毁,通过操作NSNode来实现,还可以放入到后台执行。

总结:

面试题

AFNetworking的整体结构是什么?

绘画模块、网络监听模块、安全模块,核心类是AFURLSessionManager

SDWebImage框架是怎么样加载图片的?

查找内存、在查找磁盘、都没有的情况下去网路下载,
内存的设计是什么?

RAC的信号订阅是什么意思,我们该怎么样去理解?

信号是一连串的状态的抽象,订阅信号就是通过RCASubscriber来实现,传递过去的block作为成员变量保存下来,然后RCASubscriber在具体的去调用`sentNext这个方法来执行这个block?

ASDK的实现原理?

封装一个NSNode节点,对于视图的属性设置都转化成NSNode的设置而这一部分又可以放入到后台线程线去实现,然后我们在合适的时机,也就是在RunLoop结束的时候接收一个通知,提取全局容器当中的对应的NSNode然后在一次性设置UIView,这个就是ASDK的实现原理。

上一篇 下一篇

猜你喜欢

热点阅读