RxSwift는 Swift 뿐만 아니라 JAVA, C++, Python, Kotlin 등에서도 사용되는 ReactiveX라는 MS 사의 API 중 하나이다.
An API for asynchronous programming
with observable streams
공식적인 소개에 따르면 쉽게 말해서 구독 가능한 형태의 이벤트 스트림과 함께 비동기 프로그래밍을 도와주는 API이다.
즉, 다양한 비동기 처리 방식 중 하나의 좋은 방법이라고 볼 수 있다.
이전에 우리가 Swift로 iOS 개발을 하면서 비동기 이벤트 처리를 위해서는 callback을 활용하거나 delegate를 사용하는 등 다양한 방법을 쓸 수 있었다.
만약 Rx를 사용하게 되면 전체적인 이벤트 처리를 하나의 Stream으로 보고 여러 Observer가 구독하는 형태의 처리가 가능하다.
애플의 UIKit이 워낙 MVC 지향적이기 때문에 떠오르는 MVVM 패턴의 패러다임을 적용하기에 Rx는 적절한 프레임워크라고 생각한다.
물론 애플에서 SwiftUI를 발표하고 Combine을 도입하면서 그들만의 방식을 제안하고 있으나, 현업에서는 여전히 UIKit을 내려놓기 어려우므로 RxSwift를 많이 사용하고 있는 것 같다.
또한 Combine은 최소 iOS 타겟 버전이 iOS 13이며, 그 이하의 OS를 지원해야 하는 입장에서는 Rx를 쓰고 있을 것이다.
현재는 Combine이 많이 개선되었고 기업에서 최소 OS 버전을 많이 올렸기 때문에 Combine을 사용할 수도 있으나, Swift 뿐만 아니라 다양한 언어에서 공통으로 사용되며 커뮤니티가 잘 활성화된 Rx는 공부해두는 것이 좋을 것 같다.
가장 상단에 Observable이 하나의 Stream을 나타내고, flip과 같은 특정한 Operation이 존재할 수 있으며, 이런 Operation에 따라 또 다른 Observable은 개발자가 원하는 형태의 값으로 변경된 Stream이 될 수 있다.
이런 Observable의 값을 Observer는 구독하고 새로운 이벤트를 전달 받을 수 있게 된다.
다음 포스트에서는 Observable에 대한 내용을 다루면서 RxSwift를 시작해보겠다.
개인적인 공부를 위해 작성한 내용이므로 틀린 내용이나 수정이 필요한 부분이 있을 수 있으니 감안하고 봐주시면 감사하겠습니다.
'Swift > RxSwift' 카테고리의 다른 글
[RxSwift] Disposable와 DisposeBag (0) | 2024.04.01 |
---|---|
[RxSwift] Observable 과 Observer (0) | 2024.04.01 |