
안녕하세요 Ruel입니다.
RxSwift에 대해서 아세요?
라고 물어본다면 대부분은 알고 있다고 말할거 같아요

모든게 마찬가지겠지만 쓰고는 있지만 '이게 뭐다!'라고
딱 설명하려 할때 항상 막힘이 있었어서
이전에 혼자서 정리했던 내용들을 보면서 다시 한번 정리해보고자해요
아마...시리즈물이 되지않을까 싶어지네요
시작부터 큰 부담...
RxSwift가 뭐에요?
RxSwift는 Reactive Programming을 구현하는데 사용되는 대표적 라이브러리에요.
그렇다면 Reactive Programming는 뭘까요?
- Reactive Programming(반응형 프로그래밍)은 데이터의 흐름과 변경 사항에 반응하는 프로그래밍
- 데이터 스트림과 그 스트림의 변화를 중심으로 수동으로 동작시키지 않고 데이터 변경될 때 자동으로 반응하도록 함.
이정도로 간단하게 얘기 할 수 있을 것같은데요.
그래도 사실 저렇게만 보면 이해가 안가죠...
하나씩 계속 알아보도록 하죠.
RxSwift는 ReactiveX라는 API의 Swift버전인데요, swift뿐만 아니라 다양한 언어도 지원해요.
ReactiveX 공식 홈페이지를 보게 되면

위 글을 보면 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그래밍을 작성 한다고 해요
그러니까 비동기 처리와 이벤트 기반으로 무언가를 한다네요.
요정도로만 ReactiveX와 Reactive Programming에 대해 간단하게 보고
다시 RxSwift로 넘어가 봅시다
RxSwift
RxSwift는 ReactiveX를 설명한것과 같이 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그래밍을 구현하기 위한 라이브러리에요.
Swift는 함수형 프로그래밍(Functional Programming)패러다임을 강조한 언어인데요.
RxSwift는 반응형 프로그래밍(Reactive Programming)을 첨가해, Swift에서 Functional Reactive Programming 을 따를 수 있도록해줘요.
RxSwift를 왜 쓸까?
- 선언형 코드로 복잡한 비동기 로직을 간단하게 표현할 수 있어 코드가 간결해져요
- 다양한 연산자를 사용하여 데이터 스트림을 조합하고 변환가능해요
- 사애 관리를 쉽게 하고 코드의 가독성을 높여 유지보수가 용이해져요
- 비동기 로직을 단위 테스트하기 쉬워지죠
RxSwift 사용 예제
import RxSwift
import RxCocoa
let disposeBag = DisposeBag()
// 텍스트 필드와 라벨
let textField = UITextField()
let label = UILabel()
// 텍스트 필드의 텍스트를 옵저버블로 변환하여 라벨의 텍스트에 바인딩
textField.rx.text.orEmpty
.map { "Hello, \($0)" }
.bind(to: label.rx.text)
.disposed(by: disposeBag)TextField의 입력 값을 Label에 실시간으로 반영하는 간단한 예제에요.
위와 같이 작성하면 TextField의 입력 값이 변경될 때마다 실시간으로 Label의 text가 업데이트 되는데
어때요?
좀 간단해졌다고 보이긴하는데 큰 이점을 아직 까지는 잘 모르겠어요.
점점 더 알아가다 보면 느끼는게 있겠죠..?
RxSwift의 장단점
장점
- 선언형 코드로 복잡한 비동기 로직을 간단하게 표현할 수 있어 코드가 간결해져요
- 다양한 연산자를 사용하여 데이터 스트림을 조합하고 변환가능해요
- 사애 관리를 쉽게 하고 코드의 가독성을 높여 유지보수가 용이해져요
- 비동기 로직을 단위 테스트하기 쉬워지죠
단점
- 런닝커브가 높아요. 익숙한 개념이 아니라면 이해하거나 RxSwift에는 다양한 Operator가 있어 익숙해지는데 시간이 걸려요,,
- 복잡한 데이터 스트림일 경우에는 디버깅이 어려울 수 있어요
- 모든 곳에 Rx를 적용하려하다 실수를 경험 할 수 있어요. 뭐든 적절하게 사용해야하죠
여기까지 정말 맛보기로만 간단하게만 알아보았는데요
다음 글에서는 조금더 RxSwift에 대해 자세하게 다뤄볼게요
잘못된 부분 혹은 추가적으로 알려주실 부분 있으시면 언제든지 댓글 남겨주세요.💬
감사합니다.🙇🏻♂️
'iOS > RxSwift' 카테고리의 다른 글
| RxSwift] Observable, Observer, Subjects (0) | 2024.08.25 |
|---|