티스토리 뷰
Reactive Programming (이하 RP)
사용자의 액션에 의해 실시간으로 변하게 하는 *비동기적 데이터 흐름(Async Data Stream)을 이용한 프로그래밍 패러다임 입니다.
즉, 시스템에 이벤트가 발생했을 때 알아서 처리가 되는것.
RP는 주변 환경과 끊임없이 상호작용하며, Push 방식으로 데이터의 변화가 발생한 곳에서 새로운 데이터를 사용자(Consumer)에게 전달 합니다.
패러다임: 한 시대의 사람들이 견해나 사고를 근본적으로 규정하고 있는 인식의 체계
예1)
배달 앱에서 여러사람의 메뉴를 주문시 메뉴갯수를 추가하게 되면 메뉴의 숫자가 페이지의 새로고침 없이 반영되는것처럼 특정 부분이 실시간으로 변하게 되는것을 말합니다.
예2 )
핸드폰으로 동영상을 시청하고 있는데 세로로 보고있다가 가로로 화면을 돌릴때 실시간으로 관찰(Observe)하고 있다가 화면을 전환하게 할 수 있습니다.
아래는 비동기적 data stream을 표현한 그림 입니다.
data stream이 값을 생성해서 방출해 내는것을 Emit 이라고 합니다.
이렇게 사용자의 입력을 받을때마다 즉각적으로 반응하기 위해선
지속적으로 값을 관찰(Observe) 해야하고, 값에 변화가 일어날때마다 특정 연산이 수행되야 합니다.
이러한 관찰 패턴을 Observer 또는 Observation 디자인패턴이라고 하며, RP 에서는 해당 'stream에 구독(subscribe) 한다'라고 표현 합니다.
Rx = Observable + Observer + Scheduler
Observable
데이터 스트림이라고 불리며, 데이터를 처리하고 다른 구성요소에 전달하는 역할을 합니다.
Observers
Observable에서 방출된 데이터 스트림을 사용합니다.
.subscribe 메소드를 통해 Observable을 구독하고 Observable이 방출하는 데이터를 .onNext로 수신합니다.
에러가 발생하면 .onError 부분에서 에러를 수신하며 데이터 스트림이 종료되고,
작업이 끝나면 .onComplete 부분에서 작업이 완료됨을 알린후 스트림이 종료됩니다.
Schedulers
Thread를 관리하기 위해 Observable과 Observers에게 실행되야할 thread를 알려주는 Rx 구성요소 입니다.
'iOS' 카테고리의 다른 글
[iOS] 앱 업데이트 (0) | 2022.05.29 |
---|---|
[iOS] ViewController LifeCycle (생명주기) (0) | 2022.05.27 |
[Swift] 옵셔널 체이닝 (Optional Chaining) (0) | 2022.05.22 |
[iOS] TableView, CollectionView 차이점 (0) | 2022.05.20 |
[iOS] class의 성능을 향상 시키는 방법 (0) | 2022.05.18 |
- Total
- Today
- Yesterday
- Swift 프로퍼티
- RIBs tutorial
- Swift 내림차순
- Combine: Asynchronous Programming with Swift
- CS 네트워크
- Swift
- swift reduce
- Swift RIBs
- iOS error
- swift protocol
- Swift 프로그래머스
- removeLast()
- Swift inout
- Swift 알고리즘
- 원티드 프리온보딩
- Swift final
- Swift joined()
- Swift Leetcode
- Class
- swift 고차함수
- swift programmers
- Swift ModernRIBs
- ios
- RTCCameraVideoCapturer
- swift (programmers)
- 2023년 회고
- Swift joined
- swift property
- Swift init
- Swift Error Handling
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |