bind는 RxCocoa에서 제공하는 연산자로, Observable의 결과를 UI 컴포넌트에 바인딩할 때 주로 사용됩니다.
RxSwift 단독에서는 사용하지 않으며, RxCocoa의 확장을 통해 사용됩니다.
bind는 메인 스레드에서 실행됩니다.Driver, ControlProperty, ControlEvent 등의 시퀀스와 함께 주로 사용됩니다.bind는 자연스럽게 UI 작업에 적합합니다.bind 사용법 예시// 예시: 텍스트 필드의 텍스트를 레이블에 바인딩
textField.rx.text
.orEmpty
.bind(to: label.rx.text)
.disposed(by: disposeBag)
textField.rx.text: Observable<String?> (ControlProperty)orEmpty: 옵셔널 해제label.rx.text: Binderbind vs subscribe| 항목 | bind | subscribe |
|---|---|---|
| 스레드 | 메인 스레드 고정 | 아무 스레드에서든 동작 가능 |
| 에러 처리 | 불가능 (에러 없는 시퀀스만 사용) | 에러 처리 가능 |
| 주 용도 | UI 바인딩 | 로직 처리, 상태 변경 등 |
| 반환 타입 | Disposable | Disposable |
extension Reactive where Base: UILabel {
var myText: Binder<String> {
return Binder(self.base) { label, text in
label.text = ">>> " + text
}
}
}
// 사용 예시
viewModel.titleText
.bind(to: label.rx.myText)
.disposed(by: disposeBag)
bind는 UI 바인딩용이므로 비즈니스 로직 처리에는 적합하지 않습니다.bind는 RxCocoa에서 UI 컴포넌트에 안전하게 바인딩할 수 있도록 도와주는 메서드입니다.Driver, ControlProperty, ControlEvent, Binder와 함께 사용됩니다.bind를 선호합니다.