iOS

RxSwift

2018-05-30  本文已影响12人  只为此心无垠

RxSwift

1、回忆

2、概念

参考文章:

1、RxSwift中文文档

2、Swift - RxSwift的使用详解3(Observable介绍、创建可观察序列)

3、RxSwift的使用详解5

ReactiveCocoa RxSwift
1、信号源:RACStream 1、可被监听的序列 - Observable
2、订阅者:RACSubscriber 2、观察者 - Observer
3、调度者:RACScheduler 3、调度器 - Schedulers
4、清洁者:RACDisposable 4、可被清除的资源 - Disposable -

subject参考文章

1、RxSwift的学习之路(二)——Subjects

2、RxSwift 系列(二) -- Subject

3、设计规则:

参考文章:

【漫谈】从项目实践走向RxSwift响应式函数编程

4、如何选择操作符?

大部分和RAC的操作符一致

操作符文章:RxSwift学习之旅 - 序列的基本操作

可视化链接:http://rxmarbles.com/#combineLatest

map flatMap区别

参考文章:RxSwift 系列(九) -- 那些难以理解的概念

let disposeBag1 = DisposeBag()
let test = Observable.of("1", "2", "3", "4", "5")
      .map { Observable.just($0) }

test.subscribe(onNext: {
      print($0)
}).addDisposableTo(disposeBag1) 
------------------------------------------------------------------
输出
RxSwift.(Just in _BD9B9D4356C4038796FB16D0D54A9F8E)<Swift.String>
RxSwift.(Just in _BD9B9D4356C4038796FB16D0D54A9F8E)<Swift.String>
RxSwift.(Just in _BD9B9D4356C4038796FB16D0D54A9F8E)<Swift.String>
RxSwift.(Just in _BD9B9D4356C4038796FB16D0D54A9F8E)<Swift.String>
RxSwift.(Just in _BD9B9D4356C4038796FB16D0D54A9F8E)<Swift.String>
let disposeBag = DisposeBag()
let test1 = Observable.of("1", "2", "3", "4", "5")
    .flatMap { Observable.just($0) }

test1.subscribe(onNext: {
      print($0)
}).addDisposableTo(disposeBag)
--------------------------------------------
输出

1
2
3
4
5

5、源码

参考文章:

1、RxSwift Observable 源码分析

2、【领略RxSwift源码】- 变换操作(Operators)

3、RXSwift源码浅析(一)

Producer<Element> : Observable<Element>

1、create返回AnonymousObservable实例,create_block被保存在AnonymousObservable实例的属性中
AnonymousObservable实例.subscribe,调用Producer.subscribe(Producer 是AnonymousObservable的父类),将观察者和sink垃圾者传进去调用AnonymousObservable实例.run
2、AnonymousObservable.run方法:利用传进去的参数(观察者和垃圾者)创建AnonymousObservableSink,把自己传进去调用sink.run,AnonymousObservableSink.run 触发self.create_block,参数是将AnonymousObservableSink转换成AnyObserver观察者(AnonymousObservableSink的on → AnyObserver的on ),返回的是一个disposable

6、项目推荐

1、TSWeChat:https://github.com/hilen/TSWeChat

2、喜马拉雅:https://segmentfault.com/a/1190000012776455

上一篇 下一篇

猜你喜欢

热点阅读