import RxSwift
import RxCocoa
//The package connected to the controller is used to destroy the observer
fileprivate lazy var bag: DisposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
testButton.rx.tap.subscribe{ (event: Event<()>) in
print("Monitor click events")
}.disposed(by: bag)
//Monitor modification events of text field
testTextField.rx.text.subscribe{ (event: Event<String?>) in
print(event.element ?? "")
}.disposed(by: bag)
//Monitor modification string of Label
textLabel.rx.observe(String.self, "text").subscribe { (str: String?) in
print(str)
}.disposed(by: bag)
//Monitor modification frame of uiView
textLabel.rx.observe(CGRect.self,"text").subscribe{ ( frame: CGRect?)
in
print(frame)
}.disposed(by: bag)
//Other closures
testTexfield.rx.text.subscribe { (str: String?) in
print(str)
} onError: { error in
} onCompleted: {
} onDisposed: {
}.disposed(by: bag)
//Bind the contents of input box and label
bottomTexfield.rx.text.bind(to: textLabel.rx.text).disposed(by: bag)
scrollView.contentSize = CGSize(width: 1000, height: 1000)
//Monitor the content offset of the scrolling view
scrollView.rx.contentOffset.subscribe { (point : CGPoint) in
print(point)
} onError: { error in
} onCompleted: {
} onDisposed: {
}
}
Observable 产生事件
Observer 响应事件
Operator 创建变化组合事件(操作符)
Disposable 管理绑定(订阅)的生命周期
Schedulers 线程调配队列
1 可监听序列
Single: 要么只能发出一个事件,要么产生一个error事件。
Completable: 要么产生一个completed事件,要么产生一个error事件。
Maybe:发出一个元素或者一个 completed 事件或者一个 error 事件。
Driver:1.)不会产生error事件 2.)一定在MainScheduler监听(主线程监听)3.)共享附加作用
Signal: 和driver类似。
ControlEvent:1.)不会产生error事件 2.)一定在mainScheduler订阅 3.) 一定在manScheduler监听 4.)共享附加作用
driver和signal的区别:Driver会重新发送上一个元素,Signal不会。状态序列选Driver类型,事件序列选Signal类型。
2 observer
AnyObserver:任意观察者。
Binder:确保在给定scheduler上执行(默认mainScheduler),一般由于UI操作
3.3 既是可监听序列也是观察者
AsyncSubject:发出最后一个元素或完成事件。
PublishSubject:对观察者发送订阅后产生的元素。
ReplaySubject:对观察者发送全部的元素。
BehaviorSubject: 将源 Observable 中最新的元素发送出来,然后发送新元素。
ControlProperty: 专门用于描述 UI 控件属性。
3.4 Schedulers(线程调配队列)
MainScheduler:代表主线程。如果你需要执行一些和 UI 相关的任务,就需要切换到该 Scheduler 运行。
SerialDispatchQueueScheduler:抽象了串行 DispatchQueue。如果你需要执行一些串行任务,可以切换到这个 Scheduler 运行。
ConcurrentDispatchQueueScheduler:抽象了并行 DispatchQueue。如果你需要执行一些并发任务,可以切换到这个 Scheduler 运行。
OperationQueueScheduler: 抽象了 NSOperationQueue。它具备 NSOperationQueue 的一些特点,例如,你可以通过设置 maxConcurrentOperationCount,来控制同时执行并发任务的最大数量。
Just
Of
From
creat
range
Repeat