combine 익히기

이재영·2023년 1월 23일
0

What is Combine?

애플에서 만든 비동기 처리 프레임워크

combine의 main components

  • Publisher : 생산자, 배출자 역할
    -
  • Subscriber : 소비자, 구독자, 받는 역할
    - Publisher에게 값을 받을 수 있는 타입을 선언하는 프로토콜
  • Operator : 가공 하는 역할
    - 여러 Operator들을 Combine하고, Publisher가 배출하는 값을 처리

Subject의 Built-In type

  • PassthroughSubject : 요청 받은 값을 전달해주기만 함
  • CurrentValueSubject : 요청 받은 값을 전달하고 전달한 값을 들고있음

코드

import Foundation
import Combine

// PassthroughSubject
let subTest1 = PassthroughSubject<String, Never>()

subTest1.send("Hello 1")
let subscription = subTest1.sink { value in
    print("sub 1 received value: \(value)")
}

subTest1.send("Hello 1")
subTest1.send("World 1")
// subTest1.value  -  * 남아 있는 데이터가 없음 *


// CurrentValueSubject
let subTest2 = CurrentValueSubject<String, Never>("기존에 가지고있던 초기의 value")

subTest2.send("Hello 2")

let subscription2 = subTest2.sink { value in
    print("sub 2 received value: \(value)")
}

subTest2.send("Hello 2")
subTest1.send("World 2")
subTest2.value

보이는 것처럼 PassthroughSubject에서는 전달하고 나서 아무런 value를 남기지 않으며, sink전에 데이터를 전송해도 받지 않는다.




관련 문서 및 사이트 https://developer.apple.com/documentation/combinehttps://brunch.co.kr/@tilltue/65
https://medium.com/harrythegreat/swift-combine-%EC%9E%85%EB%AC%B8%ED%95%98%EA%B8%B0-%EA%B0%80%EC%9D%B4%EB%93%9C-1-525ccb94af57
https://icksw.tistory.com/268

profile
기록

0개의 댓글