본문 바로가기
iOS

RxSwift - bind vs subscribe

by minsol Kim 2025. 5. 1.

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

댓글