RxSwift란?
RxSwift = Rx + Swift
Rx와 Swift가 합쳐진 용어
Swift를 FRP를 가능하게 해 주는 ReactiveX 라이브러리
이 말인 즉슨, 함수형 프로그래밍인 Swift에 반응형 프로그래밍을 더 해주는 라이브러리
https://github.com/ReactiveX/RxSwift
RxSwift를 사용하는 이유
1. 반응형 패러다임이 제공하는 명확함, 비동기를 동기화 된 것인양 작성이 가능
2. 일관성이 없는 비동기 코드를 하나의 비동기 코드로 개발이 가능
3. Rx로 일관된 콛드를 작성하면서 확장이 불가능한 아키텍처 패던을 해결할 수 있음
- 서로 다르게 구현한 로직을 조합하기 쉽고, 확장이 어려운 부분을 해결 가능
4. Thread 처리가 쉬워짐
- Callback 지옥에서의 탈출
- UI 이벤트, 네트워크 처리 등등 데이터 갱신했을 때의 처리가 쉬움
5. 코드가 깔끔해짐
RxSwift의 단점
1. 제일 중요한.. 학습하기 어려움ㅠㅠ
2. 디버깅이 어려움, 그래도 어찌저찌 하겠지
3. 클로저의 캡쳐리스트(Closure Capture List)
- 클로저 사용이 많음
- 캡쳐리스트를 사용하여 메모리 누수를 일으키는 부분, 순환참조를 피할 수 있게 신경써야함
- 캡쳐리스트를 해주지 않으면 race condition 같은 것이 발생할 수 있음
참고문서
클로저와 메모리 해제 실험
- https://github.com/iamchiwon/Closure_ARC_Experiment
- medium.com/anysuggestion/preventing-memory-leaks-with-swift-compile-time-safety-49b845df4dc6
Swift란?
Apple이 macOS. iOS, watchOS, tvOS를 위한 개발용 프로그래밍 언어
객체지향 프로그래밍 패러다임과 함수형 프로그래밍 패러다임을 가지고 있는 프로토콜 지향 언어
Rx, ReactiveX란?
Rx는 ReactiveX, ReactiveX는 Reactive eXtensions의 줄임말
Rx는 관찰 가능한 시퀀스를 사용하여 비동기식, 이벤트 기반 프로그램을 구성하기 위한 라이브러리
FRP란?
Funcional Reactive Programming의 약자
반응형 프로그래밍을 위한 패러다임(map, reduce, filter 등등)
http://en.wikipedia.org/wiki/Functional_reactive_programming
안드로이드 개발할 때도 RxJava를 쓰고는 했었는데
반응형 프로그래밍을 할 꺼면 다른 Rx들도 보는 게 좋을 듯!
참고 및 발췌
'Study > Swift' 카테고리의 다른 글
[Swift] 상단 코멘트 변경 (0) | 2020.11.18 |
---|---|
[Swift] CustomStringConvertible (0) | 2020.11.18 |
유닛테스트 참고 (0) | 2020.11.11 |
RxSwift 공부하기 (0) | 2020.11.11 |
[Swift] cocoapods 설치 (0) | 2020.11.10 |