-
[개념정리] RxSwift, CombineiOS/iOS개념정리 2025. 1. 10. 10:28
https://www.youtube.com/watch?v=cXi_CmZuBgg
Functional, Reactive, Programming, Paradigm 에 대해 설명
- Cuncurrency 시대: 동시에 여러 프로그램이 실행되며, 하나의 프로그램 실행이 다른 프로그램에 영향을 미치지 않아야함
따라서 퍼포먼스와 신뢰성이 중요해짐
1. instance가 동시에 수행될때, read는 문제 없지만 write에 문제가 생김 >> let 등장 (immutable 개념)
- 데이터 변경이 필요할 때는 새로 만들자
2. Pure함수 구현: side-effect를 없애기 위해 외부의 값을 사용하지 않고, 모든 input값을 통해 새로운 값을 return
3. Funtional Programming: Data가 아닌 Process에 집중해서 프로그램을 만들자
프로그래밍 언어에서, 어떠한 변수에 담을 수 있거나 return값을 사용할 수 있거나 array에 담을 수 있는 것들을 일급 객체라고 부름. (String, Int 등)
Swift는 funtion을 그렇게 다를수 있게 제공해주어 Funtional 언어라고 부를 수 있음
자바는 Object는 어떠한 변수에 담을 수 있거나 return값을 사용할 수 있거나 할수 있는게
swift는 object도, funtion도, protocol도 그렇게 처리 가능하므로 멀티 패러다임 언어 라고 할 수 있다
* OOP 방식으로 김밥을 만드는 방법 vs FP방식 김밥 만들기
OOP: 단무지, 소세지, 시금치 라는 클래스를 정의하고, 이를 공통적으로 상속받는 식재료 라는 애를 조합해서 김밥을 만든다
FP : 김말기 라는 function 자체를 정의하고, 거기다 단무지/소세지 (재료)를 넣음
즉, 차이점은 데이터를 정의하고 변화과정을 프로그래밍 할 것이냐 vs 행위를 정의하고 거기에 데이터를 집어 넣을 것이냐
* Reactive의 아이디어
- 데이터를 생성해내는 함수 (Generator, Observable)와 그 데이터를 받아서 처리하는 함수(Consumer, Subscriber)를
Stream으로 연결
- Observable에서 Subscriber까지 데이터가 흘러가는데, 흘러가는 사이에 operator를 통해 데이터를 제작,변형 가능
* React의 핵심 아이디어:
1. Async한 처리를 functional하게 처리하자
2. 리턴값은 stream인 obsevable을 반환하자
3. stream에 흐르는 data, event는 Operator로 처리하자
4. stream과 stream을 연결하자
5. Data가 아닌 Process에 집중해서 프로그램을 만들자
React 아이디어를 구현한 라이브러리: RxSwift
* 기본 아이디어:
'iOS > iOS개념정리' 카테고리의 다른 글
[개념정리] MVVM, CleanArchitecture (0) 2025.01.10 [개념정리] iOS 전반 (면접대비) (0) 2025.01.10 네트워크 비동기와 reloadData의 중요성 (0) 2023.02.05 Completion Handler / Closure (0) 2022.05.15 Timer class vs. GCD DispatchSourceTimer (0) 2022.05.08