Search
Duplicate

RxSwift 개념

Created
2023/09/14 05:27
Tags
RxSwift

RxSwift

 RxSwift 란?

RxSwift란 Reactive Programming in Swift 이다.
→ Swift를 반응형 프로그래밍으로 설계 하는 것

1. 반응형 프로그래밍 (Reactive Programming)

반응형 프로그래밍이란, 데이터의 흐름 및 변경사항을 전파하는 데 중점을 둔 프로그래밍 패러다임이다.
이 패러다임을 사용할 경우, 주변 환경/데이터에 변화가 생길 때 연결된 실행 모델들이 이 이벤트를 받아 동작하도록 설계하는 방식이다.
예를들어
var a = 10 var b = 20 var sum = a + b sum // 30
Swift
복사
여기서 만약 a라는 변수의 값이 바뀐다면,
a = 20 sum // 30
Swift
복사
일반적인 프로그래밍을 경우,
sum의 타입은 Int 타입이고, 대입할 당시의 a의 값을 복사하였고, 우리는 sum에 a가 바꼈다고 어떠한 작업을 해주지 않았기 때문에, sum이 a+b 였긴 하지만, a의 값이 바뀌었다고 해서 sum의 값이 바뀌진 않는다.
하지만, 반응형 프로그래밍에서는,
a = 20 sum // 40
Swift
복사
a값을 20으로 바꾸면, a가 바뀐 이후 우리가 어떠한 작업을 추가적으로 해주지 않아도, sum의 값이 바뀌어야 한다.
어떻게 가능한 일일까?
반응형 프로그래밍 데이터의 흐름 및 변경사항을 ‘전파’ 하는데 중점을 둔다.
만약 변경사항이 일어났을 경우, 연결된 ‘실행 모델 들이 이 이벤트를 받는다.
지금 a라는 데이터의 흐름이 기존 10에서 20으로 변경 되었을 때, 이 변경사항에 대해서 a와 연결되어 있는 sum(실행 모델)이 이벤트를 ‘전파’ 받아서 어떠한 동작(값 갱신)을 할 수 있는 것이다.
→ 이것이 반응형 프로그래밍 이다.
이제 sum, 즉 실행 모델a의 값이 바뀌는지 안바뀌는지에 대해서 ‘관찰’을 하고 있어야한다.
또한 a의 값이 바뀌었을 때, 관찰 중인 sum에게 이를 전파 해야한다.
그리고 해당 이벤트를 전파 받았을 때, 어떤 일을 할지 sum에서 정하면 된다.
이 일을 가능하게 해주는 것이 RxSwift의
Observable, Observer, Operater 이다.
유저의 ‘반응’이 비동기적으로 왔을 때, 즉 어떤 데이터의 흐름이 바뀌었을 때, 이 반응에 대해 관찰을 하는 주체가 있다면,
변화가 일어났을 때, 이 관찰하던 주체는 이 변화에 대해 전파를 받을 수 있고, 따라서 변화에 대한 어떤 동작을 진행할 수 있다.
→ 반응형 프로그래밍
사실 Swift에서도 Notification, Delegate Pattern, Closure 등으로 충분히 구현가능하지만,
기존 프로그래밍 방법들로 했을 때의 발생할 수 있는 한계점(쓰레드 넘나들기, 비동기 코드 처리로 인한 코드 뎁스 깊어지는 문제 등) 을 해결해줄 수 있는 것이 Reactive Programming, 즉 RxSwift 이다.

 요약

어떠한 비동기 이벤트가 있을 때, 그 이벤트를 관찰하는 주체가 존재하고, 만약 이벤트가 발생한다면, 관찰하는 주체는 해당 이벤트(데이터 흐름 변경)에 대해 전파 받을 수 있고,
따라서 그에 대응한 어떠한 작업을 할 수 있다.
이는 Swift로도 충분히 가능하지만, RxSwift를 사용하면 좀 더 편리하다.
그리고 그것이 어떻게 가능하게 해주는지는 앞으로 RxSwift의 Observable, Observer, 다양한 Operator 들을 통해 배우면 된다.

 RxSwift 정의 다시보기

RxSwift는 비동기 프로그래밍을 관찰 가능한 순차적 형태와 함수 형태의 연산자를 통해 처리하게 끔 도와준다.
RxSwift는 반응형 프로그래밍이기 때문에, 어떤 비동기 이벤트에 대해 관찰 가능한 형태로 만들고, 함수 형태의 연산자를 통해 이 비동기 이벤트의 변화에 따른 전파를 받을 수 있고, 또한 여러 연산을 처리할 수 있게 한다.

 Reference