事件源

在iOS开发中我们接触到的这些事件:

  • Target-Action
  • NSNotificationCenter
  • Key-Value Observing
  • Delegates
  • Callback Closures

RxSwift提供了一个统一的API来封装这些事件:Observable<Element>
Observable的意思是可以观察的,指产生事件的事件源。

事件的类型

事件有3中类型:下一个、失败、结束,定义如下:

enum Event<Element>  {
    case Next(Element)
    case Error(ErrorType)
    case Completed
}						

创建一个事件源

let o = Observable.create { observer in 
    observer.on(.Next("Hello world!"))
    observer.on(.Completed)
    
    return Disposables.create()
}

监听事件源

protocol ObservableType {
    func subscribe(on: (event: Event) -> Void) -> Disposable
}

示例

Observable<String>.create { (observer) -> Disposable in
    observer.onNext("Hello world!")
    observer.onCompleted()

    return Disposables.create()
}.subscribe { (element) in
    print(element)
}.disposed(by: disposeBag)

// outputs:
// Next(Hello world!) 
// Completed