SWIFT/RxCocoa

RxCocoa

KataRN 2022. 12. 20. 15:37
반응형

안녕하세요.

KataRN입니다.

 

오늘은 RxCocoa에 대해 알아보겠습니다.

 

1. Binder<Value>

- UI Binding에 사용.

- Error 이벤트 받지 않음.

- Main Thread에서 실행되는 것을 보장.

- .bind(to: ): 생성자(Observable) -> 수신자(Binder)

 

- 같은 처리지만 bind를 사용하면 훨씬 간결하다.

textField.rx.text
    .observe(on: MainScheduler.instance)
    .subscribe(onNext: {
    	label.text = $0
    })
    .disposed(by: disposeBag)
textField.rx.text
    .bind(to: label.rx.text)
    .disposed(by: disposeBag)

 

2. Driver<Element>

- Error 이벤트 받지 않음.

- Main Thread에서 실행되는 것을 보장.

- 스트림 공유가 가능.

- 초기값 || 최신값 replay.

 

3. Singnal<Element>

- Error 이벤트 받지 않음.

- Main Thread에서 실행되는 것을 보장.

- 구독한 이후에 발생하는 값 전달.

 

4. extension Reactive where Base: T {}

- RxCocoa에서 기본적인 기능들을 제공하지만 제공하지 않는 기능들도 있다.

- 직접 구현할 경우의 예제

extension Reactive where Base: UIView {
    var sizeToFit: Binder<Void> {
        return Binder(base) { base, _ in
            base.sizeToFit()
        }
    }
}

Driver.just(Void())
    .drive(button.rx.sizeToFit)
    .disposed(by: disposeBag)

 

오늘도 읽어주셔서 감사합니다.

반응형