iOS/Swift

[RxSwift] RxSwift 개념 뿌시기

하노 Hano 2022. 11. 2. 00:43

안녕하세요 하노입니다 :)

요새 완연한 가을의 날씨를 잘 즐기고 계신가요??

 

저는 요새 집에서 안나간지 좀 됐습니다...ㅎㅎ 여러분들이라도 저 대신 가을을 즐겨주세요,,,

 

여튼 오늘은 RxSwift의 개념에 대해서 알아보겠습니다.

 


1. RxSwift란?

 

 

RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers.

 

RxSwift는 관찰 가능한 시퀀스와 기능적 스타일 연산자를 사용하여 비동기식 및 이벤트 기반 코드를 구성하기 위한 라이브러리로, 스케줄러를 통해 매개변수화된 실행을 허용합니다.

 

여기서 중요한 사실은

  • RxSwift는 시퀀스와 연산자를 사용해서 비동기식 코드를 작성할 수 있다.
  • 스케줄러를 통해서 핸들링이 가능하다.
  • RxSwift도 결국 라이브러리이다!

이 정도 인 것 같습니다.

 

따라서 말을 쉽게 풀어보자면,

 

RxSwift는 시퀀스와 연산자를 사용해서 비동기식 코드를 작성할 수 있고, 스케쥴러로 핸들링이 가능한 라이브러리이다.

 

로 바꿔 말할 수 있을 것 같습니다.

 

 

 


 

 

2. Rx의 3요소

1. Observables

여러 이벤트들을 생성하고 방출(Emit)할 수 있는 대상.

(Observable = Observable Sequence = Sequence 모두 같은 단어이다.)

 

simpleButton.rx.tap
	.subscribe { value in
    	self.simpleLabel.text = "\(value)"
	} onError: { error in
    	//error handling
    } onCompleted: {
    	//completed
    } onDisposed: {
    	//disposed
}

 

위의 예제에서 각각 역할을 정리해보자면,

  • simpleButton.rx.tap: Observable 역할 수행
  • .subscribe: Observable과 Observer를 연결시켜주는 매개체
  • self.simpleLabel.text: Observer 역할 수행

으로 나눌 수 있습니다.

 

 

 

2. Operators

Observable을 생성, 변형 등 다양한 연산을 할 수 있도록 도와주는 연산자.

 

Operator 종류

  • Create (Ex: create, just, from, of)
  • Transform (Ex: map, flatMap, compactMap, scan)
  • Filter (Ex: filter, first, take)
  • Combine (merge)

 

3. Schedulers

프로세스가 작동하는 context를 추상화한 것 (GCD와 비슷한 개념)

 

 

3. Why use RxSwift?

In short, using Rx will make your code:

  • Composable <- Because Rx is composition's nickname
  • Reusable <- Because it's composable
  • Declarative <- Because definitions are immutable and only data changes
  • Understandable and concise <- Raising the level of abstraction and removing transient states
  • Stable <- Because Rx code is thoroughly unit tested
  • Less stateful <- Because you are modeling applications as unidirectional data flows
  • Without leaks <- Because resource management is easy

 

갑자기 영어가 나와서 놀라셨나요??? (저두여....ㅎㅎ)

 

저는 사실 RxSwift를 쓸 때 장점은 크게 2가지가 있다고 생각합니다.

 

  1. MVVM과의 밀접한 연관성
  2. 비동기 측면에서 접근할때 간결함

MVVM의 특징은 View에서 처리하는 코드가 너무 길어짐에 따라

ViewModel을 만들어 이곳에 비즈니스 로직을 관리하는 것에 있다고 생각하는데요.

 

Rx도 마찬가지로 이와 연관성이 높기 때문입니다.

 

두 번째로, 비동기 측면에서 접근할 때 기존 코드와 Rx 코드를 비교해보면,

확실히 Rx가 간결한 코드가 나오는 것을 알 수 있습니다.

 

 


 

 

오늘은 RxSwift 개념을 뿌셔봤습니다. (하지만 뿌셔지는건 나다...)

 

앞으로 당분간 RxSwift에 대해서 계속 다뤄볼 예정인데요.

 

스스로도 RxSwift의 개념들을 정리해보면서 다뤄볼 예정이라,

틀린 부분이 있거나 이상한 부분이 있으면 댓글 남겨주시면 적극적으로 찾아보고 반영해보겠습니다!!!

 

그럼 오늘 글은 여기서 마치겠습니다!

 

감사합니다 :D