RxSwift - kirseia/study GitHub Wiki
-
Subjects 는 Observer / Observable 두 역할을 모두 수행하는 브릿지 또는 프록시
-
하나의 이상의 Observable 을 구독하고 값을 내보내리고 함
-
PublishSubject - 구독 이후에만 값을 전달
-
ReplaySubject - 버퍼 크기 만큼의 값을 저장하고 있을 수 있음
-
BehaviorSubject - 하나의 버퍼를 가지는 Subject, 구독 후 마지막 값을 전달
-
Variable - BehaviorSubject를 감쌌으며 complete나 error가 발생하지 않음, 해제 될 때 complete 발생
- Variable은 없어지고 BehaviorRelay 로 대체됨
- UI에서 사용하기 위해 Subject를 Relay 로 만든 것처럼 (error 안나는), Observable이 에러를 무시하려면 Driver / Signal로 써야 함
- 기본이 main thread 이 Observable
- signal 은 subscribe 이후에 (like publishSubject), driver 는 subscribe 시점에 이전값도 (like behaviorSubject)
- Observable -> bind to -> binder
- binder는 obervable value 에 반응함.
extension Reactive where Base: UIViewController {
/// Bindable sink for `startAnimating()`, `stopAnimating()` methods.
public var isAnimating: Binder<Bool> {
return Binder(self.base, binding: { (vc, active) in
if active {
vc.startAnimating()
} else {
vc.stopAnimating()
}
})
}
}