美文网首页
ReactiveObjc框架之类

ReactiveObjc框架之类

作者: saber_zz | 来源:发表于2021-04-13 17:10 被阅读0次

本章我们来看下ReactiveObjc的类设计。

信号相关

我们先来看下ReactiveObjc关于信号的类设计。


image.png

RACStream

RACStream是一个抽象类。提供了抽象方法,操作方法,debug能力。我们可以看到作者使用category聚合功能。
为啥有些方法必须子类重写? 有些不用?

  • 抽象方法(必须由子类重写)
  • Debug
  • operation方法
image.png

RACSignal

RACSignal继承RACStream。实现了信号创建,订阅功能。信号和订阅是一一对应关系。

  • 重写了RACStream的抽象方法。
  • 继承了RACStream的Debug和Operation方法。
  • 新增了信号的创建方法。
  • 新增主动触发
  • 新增信号订阅
  • 新增Debug方法
  • 新增Test方法

RACSignal的子类

RACChannelTerminal
重写了RACSubscriber的send方法转发给内部持有一个otherTerminal,主要就实现了A信号发送到B信号的订阅。这个类主要是为RACChannel服务的。
RACChannel是RAC里面通道的概念,主要是实现A信号发送消息给B信号,B信号发送数据给A信号。是一个双向绑定的概念。
RACDynamicSignal
默认创建信号内部都是转发给这个信号类。这个类主要是重写了订阅的方法。
RACEmptySignal
空信号,不会关联Signal,订阅就直接发送sendCompleted
RACErrorSignal
Error信号,不会关联Signa,订阅直接发送error
RACReturnSignal
renturn信号,包装NSObject->Signal,订阅直接发送NSObject被包装的值,同事发送sendCompleted
RACSubject
主题信号,通过重写订阅,发送。 支持一个主题重复订阅。

RACSequence

RACSequence继承RACStream

订阅相关

RAC订阅主要是通过RACSubscriber 和 RACSignal配合来实现的。
RACSignal接收订阅,内部创建RACSubscriber实例,被回调给RACSignal创建的block。

回收相关

RAC订阅的回收或者说订阅动作的取消,都是用过RACDisposable及其子类来完成的。
我们先来看下RACDisposable的类图。


image.png

RACDisposable
订阅回收的基类,本身类非常简单。主要是挂载block。保存disposed状态。
RACCompoundDisposable
组合订阅回收类。 主要处理同事取消多个动作。重写了Disposable方法。
RACKVOTrampoline
建立KVO连接,处理KVO类的Disposable,重写Disposable,移除KVO观察者。
RACScopedDisposable
重写dealloc,内部调用Disposable。
RACSerialDisposable

RACMulticastConnection 捕获多订阅,内部通过RACReplaySubject实现。

相关文章

网友评论

      本文标题:ReactiveObjc框架之类

      本文链接:https://www.haomeiwen.com/subject/cstclltx.html