Architecture
EDD
[iOS] RxSwift
[iOS] RxSwift
Trait
Maybe
- Single과 Completable의 중간
- Completed, Element, Error 중 1개만 발행
ControlEvent
- UI를 위한 ObservableType
- 실패하지 않음
- ControlProperty가 Subscribe 할때 1개의 이벤트를 주는것과 반대로 한개도 주지 않음(이벤트니까)
- Control이 Dealloc되기 시작할때 Completed 발생
- 이벤트는 MainScheduler로 전달
- 이벤트 발생은 ConcurrentMainScheduler에서 생성
scrollView.rx.willBeginDragging
button.rx.tap
ControlProperty
- UI를 위한 ObservableType(이면서 ObserverType)
- 실패하지 않음
- shared(replay: 1) behavior
- subscribe되면 즉시 마지막 element를 반환해줌
- control이 dealloc되기 시작할때 Completed 발생
- MainScheduler 에서 발생
- SubscribeOn, ObserveOn 모두 Main
label.rx.text
- label.rx.isHidden은 ControlProperty가 아님(binder)
Driver
- UI관련된 것을 다루는데 좋음
- Error가 없다.
- MainScheduler 작동
.observe(on: MainScheduler.instance)
.catchErrorJustReturn(onErrorJustReturn)
.share(replay: 1, scope: .whileConnected)
- drive 함수로 이벤트 처리
let publishSubject = PublishSubject<Int>()
let driver = pulishSubject.asDriver(onErrorJustReturn: 100)
driver.drive(onNext: { element in
print("drive1: \(element)")
})
.dispose(by: disposeBag)
publishSubject.onNext(4)
driver.drive(onNext: { element in
print("drive2: \(element)")
})
.dispose(by: disposeBag)
publishSubject.onError(RxError.noElements)
Signal
- Error가 없다(catchError)
- MainScheduler 에서 동작
- share(scope: .whileConnected) 로 동작
- 새로운 subscriber에게 replay 해주지 않는다.
댓글남기기