一、相关概念
1.Observable可观察序列
2.Observer观察者
二、核心逻辑分析
1.创建序列
let ob = Observable<Any>.create {
(obserber) -> Disposable in
obserber.onNext(“Hello RxSwift")
obserber.onCompleted()
obserber.onError(NSError.init(domain: "coocieeror", code: 10087, userInfo: nil))
return Disposables.create()
}
流程分析:
1.首先我们进入create源码,直接command进不去,我们可以在工程导航栏搜索Create.swift类文件进入。在Create.swift类中,其实就是定义了一个继承自Producer的匿名序列AnonymousObservable。
//匿名序列
final private class AnonymousObservable<Element>: Producer<Element> {
typealias SubscribeHandler = (AnyObserver<Element>) -> Disposable
let _subscribeHandler: SubscribeHandler
init(_ subscribeHandler: @escaping SubscribeHandler) {
//保存外部订阅的代码块
self._subscribeHandler = subscribeHandler
}
override func run<O : ObserverType>(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
let sink = AnonymousObservableSink(observer: observer, cancel: cancel)
let subscription = sink.run(self)
return (sink: sink, subscription: subscription)
}
}
其主要工作就是保存了外部订阅的代码块:self._subscribeHandler = subscribeHandler。该代码块正是ViewController.swift中的create闭包.create,将创建序列时的闭包中据进行保存,供随时取用。
恰当地运用了函数式编程思想保存属性_subscribeHandler。
2.订阅序列
//订阅序列
let _ = ob.subscribe(onNext: {
(text