RxSwift
✅ RxSwift = Reactive eXtension + Swift
RxSwift의 Rx는 Reactive eXtension의 약자로 직역하자면 Observable Stream을 가지고 asyn(비동기) 프로그래밍을 하기 위한 API이다.
Reactive Programming
✅ Reactive Programming = 반응형 프로그래밍
" Reactive programming is programming with asynchronous data streams. "
➡️ 반응형 프로그래밍이란 비동기 데이터 스트림과 함께하는 것.
" Reactive programming describes a design paradigm that relies on asynchronous programming logic to handle real-time updates to otherwise static content. "
➡️ 반응형 프로그래밍은 정적 컨텐츠의 실시간 업데이트를 위해 비동기 프로그래밍 논리에 의존하는 디자인 패러다임을 설명.
반응형 프로그래밍은 어떠한 이벤트가 발생하면 그것을 구독하고 있던 Observer가 이를 감지하고 실시간으로 업데이트 해주는 것으로 요약할 수 있다.
Swift는 함수형 프로그래밍 패러다임을 강조하는 언어이다. RxSwift는 Swift에 반응형 프로그래밍 패러다임을 더하여 Swift에서 FRP를 따를 수 있게 한다.
var a = 3
var b = 10
var min = b - a
min // 7
a = 5
min // 7
a의 값이 5로 변했다고 해도 min의 값은 5가 아닌 7이다.
Why? min에 a가 바뀌었다고 처리해주지 않았기 때문이다. But, 반응형 프로그래밍에서는 a의 값이 5로 변하면 min에 a가 바뀌었다고 따로 처리해주지 않아도 min의 값이 5가 된다.
" 반응형 프로그래밍은 어떠한 이벤트가 발생하면 그것을 구독하고 있던 Observer가 이를 감지하고 실시간으로 업데이트 해주는 것으로 요약할 수 있다. " 의 설명으로 풀어서 이해해보자.
➡️ 어떠한 이벤트 발생 : a의 값이 3에서 5로 변경
➡️ 구독하고 있던 Observer가 a의 값이 변경 됨을 감지
✅ a의 값이 바뀌었을 때 관찰중인 Observers는 어떻게 구현 ? -> RxSwift의 Observable, Operater, Observer로 구현
➡️ 실시간으로 min의 값이 업데이트
왜 RxSwift?
우리가 개발을 할 때 "어떠한 이벤트"란 버튼이 Tapped 되었을 때, 키보드가 올라 왔을 때, 드래그 했을 때 등이 있다.
즉, 비동기적인 이벤트이다.
✅ 개발자는 사용자가 언제 어떤 이벤트를 어떻게 처리할지 알 수 없다.
➡️ 사용자의 반응이 비동기적으로 왔을 때, 이 반응에 대해 관찰하고 있던 Observer가 이 변화를 감지하여 어떠한 동작을 처리하는 것.
위의 과정은 기존 Swift에서 Closure, Delegate 등으로 구현할 수 있었다. 그럼 왜 RxSwift를 사용해야할까?
1. 간결하게 구현이 가능하다.
2. 다양하고 편리한 Operator 제공.
3. 쓰레드 처리가 비교적 쉬워진다.
등이 있다.
Reference
https://yozm.wishket.com/magazine/detail/1334/
https://babbab2.tistory.com/182
'iOS > RxSwift' 카테고리의 다른 글
[iOS/RxSwift] Operators - Map, Filter (0) | 2024.02.03 |
---|---|
[iOS/RxSwift] Operators - 생성 연산자 (create, just, of, from) (1) | 2024.02.03 |
[iOS/RxSwift] Marble Diagram (0) | 2024.02.01 |
[iOS/RxSwift] Disposable, DisposeBag (0) | 2024.02.01 |
[iOS/RxSwift] Observable, Observer (0) | 2024.01.30 |