[내일배움캠프 47일차] 앱 개발 심화2

NH·2025년 5월 8일

내일배움캠프

목록 보기
47/62
post-thumbnail

ReativeX와 RxSwift

→ ReactiveX 는 옵저버블 스트림으로 비동기 프로그래밍을 돕는 API 입니다.

  • ReactiveX비동기 프로그래밍옵저버 패턴 을 사용하기 쉽도록 돕는 라이브러리
  • 데이터의 변화에 반응하는 프로그래밍을 하게되어 반응형 프로그래밍 이라고도 함
  • Microsoft 사에서 만든 라이브러리로, ReactiveX 를 적용한 Swift 라이브러리를 RxSwift 라고 함
  • RxSwift, RxJava, RxPython 등 웬만한 메이저 언어들에 다양하게 지원.
  • 따라서 다른 플랫폼의 개발자와도, ReactiveX 의 개념을 가지고 함께 소통 가능
  • ReactiveX 는 다양한 분야의 개발자들이 애용하는 라이브러리로, 가독성이 좋은 코드와 유지보수가 좋은 코드를 작성하는 데 도움을 줌

RxSwift vs Combine

  • RxSwift 는 애플이 아닌 마이크로소프트가 제공하는 서드파티 라이브러리
  • RxSwift 와 거의 똑같은 기능을 제공하며 애플이 개발한 Combine 이라는 라이브러리가 존재

Combine

  • iOS 13 이상부터 지원하는 라이브러리
  • 따라서 아직 발전 중에 있는 기술이며, 관련 자료가 RxSwift 보다 적은 편

RxSwift

  • ReactiveX 의 프로그래밍 철학을 따르기 때문에, 같은 철학을 따르는 RxJava, RxPython, RxJS 등 다른 언어를 사용하는 개발자들과 원활한 대화 가능
  • 특히 안드로이드 개발자도 RxJava 로 안드로이드 앱 개발을 한다면, 중요한 로직등을 싱크를 맞춰서 함께 설계할 수 있게 됨
  • 또 현재 이미 많은 기업들의 코드는 RxSwift 로 작성이 된 상태로 동작
  • 새로운 피쳐 개발이나 신생 스타트업이 아니라면 RxSwift 사용 비율이 Combine 보다 높음
  • RxSwift 를 이해한다면 Combine 의 이해는 매우 쉬울 것

Observable

Observable 개념

  • Observable = 관측 가능한 대상

Observable 과 Observer

  • Observable 은 관측 가능한 대상이며, 이벤트와 데이터를 방출하는 클래스
  • Observable 에서 이벤트를 방출하면, 이를 구독하고 있던 구독자(=관찰자)들이 그에 반응하여 어떠한 로직을 수행
  • Observable 을 구독하는 것을 subscribe 라고 하며, 이를 구독하고 관찰하는 관찰자를 Observer 라고 함

예를 들어, Observable 을 구독하고 있는 구독자가 “나는 Observable 에서 정수 값이 방출되어 나오면, 그 값에 2를 곱해서 사용할래” 라는 세팅을 마쳐놓았고, Observable 에서 3이라는 값이 방출되면, Observer 는 6이라는 값을 사용하게 되는 것이죠.


Observable 은 데이터가 흐르는 Stream 이다.

  • Observable 은 데이터가 흐르는 Stream 이라고 표현하기도 한다.
  • Stream 의 사전적 의미를 살펴보면 시냇물, 흐름, 줄기 라는 의미를 갖습니다.

Observable 은 일반적으로 선언하는 변수와 다르게 스트림의 성질을 갖기 때문입니다.

  • 이렇게 선언한 값들은 한 번 값을 가지면 그 값 자체로 의미를 갖음
  • 하지만 Observable 은 계속해서 새로운 값을 “방출” 가능
  • 이를 구독한 구독자들은 값이 방출되었을 때, 그것에 곧바로 반응 함.

Observable 이벤트 방출 그림

Observable 에서 이벤트(값) 을 방출할 때는 상태를 함께 방출합니다.

  • onNext : 정상적인 데이터 방출
  • onError : 에러 방출
  • onCompleted : 옵저버블의 종료 방출

Single 이란

옵저버블 중에서, 오직 하나의 값만을 방출하는 옵저버블을 Single 이라고 합니다.

  • onSuccess: 옵저버블의 onNext 와 동일
  • onFailure: 옵저버블의 onError 와 동일

▪️ Subject 란

옵저버블 중에서 외부에서 값을 넣어줄 수 있는 옵저버블을 Subject 라고 합니다.

  • BehaviorSubject : 초깃값이 있는 Subject. 구독시 가장 최근에 방출된 값을 받음.
  • PublishSubject : 초깃값이 없는 Subject. 구독 이후로 방출된 값을 받음.
profile
iOS 개발 블로그

0개의 댓글