아요 개발 일기

[RxSwift] RxSwift 란? 본문

iOS/RxSwift

[RxSwift] RxSwift 란?

소진이 2023. 1. 3. 15:38

안녕하세요 소진입니다 :D

오늘은 아주아주 중요한 RxSwift에대해서 알아보도록하겠습니다!

 

저도 아직 지식이 부족하기도 하고 계속 공부하면서 채워나갈 예정이니

틀린 부분이 있으면 댓글로 알려주시면 정말정말 감사하겠습니다:) 🫶🏻


 

Swift를 공부하는 사람이라면

무조건 한 번쯤은 꼭 들어본다는 RxSwift!!!!

 

러닝커브(사전 지식이 많이 필요함)가 만만치 않다고 하기도하고,

뭔가 구성이 복잡해보여 접근하기 어렵지만!

도망다니기만 할 수는 없으니!

같이 한 번 부딪혀 봅시다!

 


 

 일단, RxSwift가 뭐야? 🤔

 

ReactiveX에서 만든 라이브러리로써

Reactive eXtension + Swift의 합성어입니다.

 

흔히 RxSwift를

관찰 가능한 시퀀스(sequence)를 사용하여

비동기 프로그램, 이벤트 기반 프로그램을 

구성하기위한 오픈 소스 라이브러리

라고 설명하고있어요.

 

 

음.. 뭔가 말이 복잡하죠?

간단하게 정리해보자면 아래와 같습니다.

 

 

변경 혹은 추가 등과 같이 데이터의 상태 변화가 될 때

 

데이터를 관찰하는 '시퀀스'라는 친구가 이를 알아채고 알립니다.

 

그 후, 데이터별로 설정해 놓은 이벤트(create, defferred 등)를 실행합니다.

 

 

자! 전체적인 흐름에 대해서 이해하셨나요?

사실 위의 설명은 가장 중요한 Observable과 Subscribe 개념을 빼고

전체적인 흐름만 정리했는데요.

 

이 Observable과 Subscribe에 대해 꼭 이해해야

추후에 공부할 Observable 연산자들도 뿌실 수 있어요!!!

 

어렵지 않아요! 같이 가봅시다!

 


 

Observable와 Subscribe

 

RxSwfit는 크게 

Observable과 Subscribe와의 관계로 이루어진 코드 프레임워크라고 합니다!

 

Observable과 Subscribe의 관계는 아래와 같습니다.

 

우선, 각각의 Observable은 item(데이터)들을 가지고 있습니다.

특정 Observable을 Subscribe(구독)하면,

시퀀스(sequence)가 해당 Observable에서 방출하는 모든 item(data)들에 반응하고,

해당 Observable의 이벤트를 실행합니다.

 

이렇게 글로만 설명하면 복잡하고 어려워보일 수 있으니,,

그림으로 이해해봅시다 ㅎㅎ

 

 

저희가 카페에서 알바를 하고 있다고 합시다!

메뉴는 위와 같이 네가지가 있습니다 !!

 

 

 

각각 레시피가 존재하겠죠???

이때 이 레시피를 각각 Observable이라고 생각하시면됩니다!

 

여기서!!!

각 메뉴마다 재료들이 있겠죠?

 

예를들어 🍊 주스에는

🚰 물, 🍊 귤, 🍯 시럽 등...의 재료가 필요하다면

이 🚰 🍊 🍯 들이 Item(데이터) 입니다!

 

 

만약 손님이 🍓 아이스크림을 주문했다고 합시다.

레시피랑 재료 단 두개만으로는 메뉴가 자동으로 만들어지진 않죠,,?

저희가 직접 접근해서 메뉴를 제조해야겠네요!

 

그때!

제조하는 것을 Subscribe라고 합니다!

 

즉,

 

각각의 Observable = 레시피

Observable의 Item = 재료

Subscribe = 요리

 

라고 할 수 있겠네요 ㅎㅎㅎㅎ

 

 

어때요!

생각보다 쉽죠?!!

 

Rx는 주로 마블 다이어그램으로 설명을 합니다

그렇다면 마블 다이어그램도 안 알아보면 섭섭하겠져? 

 


 

RxSwift 마블 다이어그램

 

우선 마블 다이어그램이란,

시간에 흐름에 따라서 시퀀스에서 방출되는 요소들을

시각화 한 것을 말합니다.

 

뭔가 말이 어렵지만 별 말 아니에요!

 

" 위에서 공부한 것들을 그냥 시간에 흐름에 따라 그려놨구나~ "

 

라고 생각하시면 됩니다!!

 

자, 이제 그만 말하고 

그 마블 다이어그램을 직접 봅시다!

 

모든 마블은 여기에서 확인 가능합니다.

 

공식 홈페이지에 있는 Rx의 동작 방식을 마블로 표현한 이미지를

한글로 번역해서 가져왔습니다!

 

그림이 어렵지는 않죠??? ㅎㅎ

이번 글에서는 RxSwift에 대해서 알아보았습니다.

다음에는 RxSwift의 핵심인 Observable과 Subscribe에대해 

조금 더 자세히 알아보도록 하겠습니다 :-)

 


 

번외) 설치하는 법

 

다른 라이브러리 사용하는 법과 동일하게

cocoapod, cathage, SPM을 통해서 다운 받고 사용할 수 있습니다!

 

자세한 설치법은 여기에 있습니다.

 

Cocoapod

pod 'RxSwift'
pod 'RxCocoa'

 

Cathage

github "ReactiveX/RxSwift"

 

SPM

https://github.com/ReactiveX/RxSwift

 


마치며..

 

RxSwift란,

Observable이 이벤트를 방출(값 변경 등)하는 것을 관찰하고 방출된 이벤트에 따른 액션을 취할 수 있게 도와주는 라이브러리

 

즉, Swift에서 반응형 프로그래밍을 할 수 있도록 도와주는 라이브러리