반응형 프로그래밍 (Reactive Programming)
- 반응형 프로그래밍 (Reactive Programming) 는 데이터 스트림 또는 데이터의 변화에 따라 코드가 자동으로 반응하는 프로그래밍 패러다임이다.
- 반응형 프로그래밍의 핵심 개념:
데이터 스트림 ( Data Stream)
- 이벤트 스트림, 값의 흐름 등과 같이 시간에 따라 연속적으로 발생하는 데이터의 흐름을 나타낸다.
- 예를 들어서 변수 temp 가 변동이 있다면, 이벤트 스트림을 통해 변동이 되었다 라는걸 알릴 수 있다.
옵저버 (Observer) 패턴
- 데이터의 변화를 감시하고, 변화에 따라 특정 작업을 수행하는 디자인 패턴이다.
- 변화가 일어나면 옵저버는 해당 변화에 반응하여 필요한 작업을 수행한다.
- willSet, Didset가 옵저버의 예시이다. 해당 변수가 변화하는 걸 감시하고 필요한 작업을 수행한다.
- 데이터 스트림을 조작하여 필터링, 매핑, 결합, 변환 등을 수행하여 새로운 스트림을 생성하는 작업이다.
- 이를 통래 데이터 스트림을 효과적으로 처리하고 필요한 형태로 가공할 수 있다.
- 예시로는 두개의 스트림을 하나로 만들어서 관리를 할 수 있다? 정도로만 우선 알고 있으면 될듯하다.
바인딩 (Binding) [이해 못함]
- 데이터의 변화와 이에 따른 작업의 연결을 나타낸다.
- 데이터와 UI 요소, 또는 데이터와 작업 사이의 연결을 설정하여, 데이터의 변경이 발생하면 이에 맞춰 UI나 다른 작업을 자동으로 업데이트 합니다.
Combine
- combine 은 swift 프로그래멍 언어에 포함된 프레임워크로, 비동기적인 이벤트 스트림을 처리하고 조작하는데 사용된다.
- Publisher (발행자)
- 데이터 스트림을 생성하고, 이벤트를 방출하는 타입이다.
- 값 혹은 오류 혹은 작업 완료의 대한 알림을 알릴 수 있다.
- Subscriber (구독자)
- Publiser 에서 방출되는 이벤트를 처리하는 타입이다.
- Operator (연산자)
- Combine 프레임워크에는 데이터 스트림을 조작하고 변환하기 위한 다양한 연산자가 제공된다.
- map, filter, flatMap등의 연산자를 사용하여 데이터 스트림을 조작하고 새로운 형태로 변환할 수 있다.
- Cancellable (취소 가능한)
- Combine에세는 구독을 취소할 수 있는 타입인
Cancellable
이 제공된다.
- 구독을 취소함으로써 더 이상 이벤트를 받지 않도록 설정할 수 있다.
import Foundation
import Combine
class DataModel {
@Published var textValue: String = ""
}
let dataModel = DataModel()
let cancellable = dataModel.$textValue.sink { newValue in
print("Value changed to: \(newValue)")
}
dataModel.textValue = "Hello, Combine!"
dataModel.textValue = "Another value"