본문 바로가기
💡 Today I Learned/스터디 자료정리

[스터디4일차][RxSwift] RxCocoa

by 솔비님 2024. 10. 22.

 

 

1.  RxCocoa란?

RxSwift와 함께 사용되는 라이브러리로 UI와 관련된 작업을 반응형으로 처리할 수 있게 한다

 

 

2.  RxCocoa의 주요 기능

2-1.  UI 바인딩

  • 여러 UI요소들(UIButton, UILabel, UITextField...) 과 데이터 사이의 바인딩을 쉽게 처리한다
  • Observable로 변환하여 상태 변화를 쉽게 감지하고 처리한다
  • 활용 예시
let textField = UITextField()
let label = UILabel()

textField.rx.text.orEmpty
    .bind(to: label.rx.text)
    .disposed(by: disposeBag)

*텍스트필드 값 업데이트 시 즉시 반영

 

let switchControl = UISwitch()
let button = UIButton()

switchControl.rx.isOn
    .bind(to: button.rx.isEnabled)
    .disposed(by: disposeBag)

*스위치의 상태에 따라 버튼 활성/비활성화 제어

 

 

 

2-2.  ControlEvent와 ControlProperty

  • UI 컴포넌트에서 발생하는 이벤트나 상태를 쉽게 다룰 수 있게 한다

  • ControlEvent
    -> UI요소에서 발생하는 이벤트(사용자 상호작용)를 처리한다
    -> 주로 버튼 클릭, 스위치 변경 등의 이벤트를 관찰
        🎈 키워드 요약  |  이벤트 기반, 읽기 전용, 구독

  • ControlProperty
    -> UI요소의 상태(값)을 추적(관찰)하여 업데이트한다
    -> 텍스트필드의 값이나 스위치의 on&off를 감지함
    -> 옵저버블과 옵저버 둘다 지원해서 양방향 바인딩이 가능함
      🎈 키워드 요약  |   키워드 요약) 상태 기반, 상태를 관찰 후 업데이트, 읽기/쓰기 모두 가능, 관찰 및 수정 가능

 

 

2-3.  Driver

  • UI의 안전한 바인드 처리를 위해 RxSwift에서 제공하는 특수한 옵저버블
  • 주요 특징
    1.  에러가 발생하지 않음
    2.  항상 메인 스레드에서 동작해서 별도 스케줄러를 설정할 필요가 없다
    3.  다중 구독 가능: Driver는 Hot Observable이므로 여러 구독자가 있어도 하나의 데이터스트림을 공유한다 = 여러 UI 요소에 동시에 바인딩 할 수 있다
 

[Swift🍎] RxSwift에서 bind와 driver의 차이

1.  BindObservable을 UI요소에 바인딩 할 때 사용하며 데이터 스트림을 직접적으로 UI와 연결할 수 있다주요 특징1.  간단한 코드로 UI 업데이트를 할 수 있다     → OnNext만 가지고있기 때문에 단순

solby.tistory.com

 

 

 

구분 Binder ControlEvent ControlProperty
읽기(관찰) X O O
쓰기(방출) O X O
특징 단방향
UI업데이트
UI 발생 이벤트 관찰
사용자 인터랙션*
(사용자와 기기의 상호작용)
양방향 바인딩, 읽기/쓰기
UI 상태 관찰 후 업데이트

 

*사용자 인터랙션: 버튼 클릭, 스크롤, 슬라이더 조작, 텍스트 입력