1. bind (바인딩)
bind는 주로 UI 컴포넌트와 데이터를 연결할 때 사용됩니다. bind는 UI와 비즈니스 로직을 분리하면서, 데이터가 변경될 때 UI가 자동으로 업데이트되도록 합니다. bind는 Observable을 UI 컴포넌트에 연결할 때 유용합니다.
closeButton.rx.tap
.bind { [weak self] in
self?.dismiss(animated: true, completion: nil)
}
.disposed(by: disposeBag)
위 코드에서 bind는 closeButton.rx.tap 이벤트를 구독하고, 해당 버튼을 탭했을 때 dismiss 메서드를 호출하는 방식으로 동작합니다. bind는 UI 이벤트가 발생했을 때 실행할 동작을 바인딩하는 역할을 합니다.
2. subscribe (구독)
subscribe는 옵저버블을 구독하여 데이터를 받거나 이벤트를 처리하는 데 사용됩니다. subscribe는 값이 도달할 때마다 이를 처리하는 클로저를 실행하는 방식입니다. 이 메서드는 값이나 이벤트를 처리하는 데 주로 사용됩니다.
letterTextView.rx.text
.orEmpty
.subscribe(onNext: { [weak self] text in
guard let self = self else { return }
let isEmpty = text.isEmpty
self.placeholderLabel.isHidden = !isEmpty
if isEmpty {
self.startPlaceholderBlinking()
} else {
self.stopPlaceholderBlinking()
}
})
.disposed(by: disposeBag)
위 코드에서는 letterTextView.rx.text.orEmpty가 텍스트 변화 이벤트를 발생시키고, 이를 subscribe하여 텍스트가 비어 있는지 여부에 따라 placeholder의 상태를 업데이트합니다. 이 경우, subscribe는 값을 받는 방식으로, 텍스트 입력이 변경될 때마다 동작을 처리합니다.
주요 차이점
bind | subscribe | |
목적 | UI 컴포넌트에 값을 바인딩 | 옵저버블을 구독하여 값을 처리 |
사용처 | UI 업데이트에 주로 사용 | UI 외에도 데이터를 처리하거나 이벤트를 처리할 때 사용 |
값 처리 | 반환값이 없음 | 반환값을 받을 수 있음 (값 처리, 에러 처리, 완료 처리 등) |
예시 | textField.rx.text.bind(to: label.rx.text) | observable.subscribe(onNext: { ... }) |
- bind: UI 요소와 Observable을 연결하여 데이터를 자동으로 UI에 반영하는 데 사용됩니다.
- subscribe: Observable에서 발생하는 이벤트나 값을 처리하는 데 사용됩니다.
'iOS' 카테고리의 다른 글
iOS - layoutIfNeeded() (0) | 2024.08.15 |
---|---|
iOS - NotificationCenter (0) | 2024.08.05 |
iOS - 강한 참조 순환과 약한 참조 순환 (0) | 2024.08.05 |
iOS - missing package product 'moya' (0) | 2024.08.01 |
iOS - 프레임워크와 라이브러리 차이점 (0) | 2024.08.01 |
댓글