3월 14일 TIL ( Combine? )

이승원·2024년 3월 14일
0

TIL

목록 보기
45/75
post-thumbnail

반응형 프로그래밍 (Reactive Programming)

  • 반응형 프로그래밍 (Reactive Programming) 는 데이터 스트림 또는 데이터의 변화에 따라 코드가 자동으로 반응하는 프로그래밍 패러다임이다.
  • 반응형 프로그래밍의 핵심 개념:

데이터 스트림 ( Data Stream)

  • 이벤트 스트림, 값의 흐름 등과 같이 시간에 따라 연속적으로 발생하는 데이터의 흐름을 나타낸다.
  • 예를 들어서 변수 temp 가 변동이 있다면, 이벤트 스트림을 통해 변동이 되었다 라는걸 알릴 수 있다.

옵저버 (Observer) 패턴

  • 데이터의 변화를 감시하고, 변화에 따라 특정 작업을 수행하는 디자인 패턴이다.
  • 변화가 일어나면 옵저버는 해당 변화에 반응하여 필요한 작업을 수행한다.
  • willSet, Didset가 옵저버의 예시이다. 해당 변수가 변화하는 걸 감시하고 필요한 작업을 수행한다.

스트림의 변환과 조작 (Transforming and Manupulating Streams)

  • 데이터 스트림을 조작하여 필터링, 매핑, 결합, 변환 등을 수행하여 새로운 스트림을 생성하는 작업이다.
  • 이를 통래 데이터 스트림을 효과적으로 처리하고 필요한 형태로 가공할 수 있다.
  • 예시로는 두개의 스트림을 하나로 만들어서 관리를 할 수 있다? 정도로만 우선 알고 있으면 될듯하다.

바인딩 (Binding) [이해 못함]

  • 데이터의 변화와 이에 따른 작업의 연결을 나타낸다.
  • 데이터와 UI 요소, 또는 데이터와 작업 사이의 연결을 설정하여, 데이터의 변경이 발생하면 이에 맞춰 UI나 다른 작업을 자동으로 업데이트 합니다.

Combine

  • combine 은 swift 프로그래멍 언어에 포함된 프레임워크로, 비동기적인 이벤트 스트림을 처리하고 조작하는데 사용된다.
  1. Publisher (발행자)
    • 데이터 스트림을 생성하고, 이벤트를 방출하는 타입이다.
    • 값 혹은 오류 혹은 작업 완료의 대한 알림을 알릴 수 있다.
  2. Subscriber (구독자)
    • Publiser 에서 방출되는 이벤트를 처리하는 타입이다.
  3. Operator (연산자)
    • Combine 프레임워크에는 데이터 스트림을 조작하고 변환하기 위한 다양한 연산자가 제공된다.
    • map, filter, flatMap등의 연산자를 사용하여 데이터 스트림을 조작하고 새로운 형태로 변환할 수 있다.
  4. Cancellable (취소 가능한)
    • Combine에세는 구독을 취소할 수 있는 타입인 Cancellable 이 제공된다.
    • 구독을 취소함으로써 더 이상 이벤트를 받지 않도록 설정할 수 있다.
// combine 예시
import Foundation
import Combine


class DataModel {
//Publisher
    @Published var textValue: String = ""
}

let dataModel = DataModel()

//SubScriber
let cancellable = dataModel.$textValue.sink { newValue in
    print("Value changed to: \(newValue)")
}

dataModel.textValue = "Hello, Combine!"
dataModel.textValue = "Another value"

/*
출력
Value changed to: 
Value changed to: Hello, Combine!
Value changed to: Another value
*/
profile
개발자 (진)

0개의 댓글