iOS/Combine

PassthroughSubject

까칠코더 2023. 5. 31. 10:12
반응형

PassthroughSubject는 값을 발생시키고 구독자(subscriber)에게 전달하는 데 사용되며, Subject 프로토콜을 준수하며, 데이터 흐름의 시작점이 될 수 있습니다.

또한 PassthroughSubject는 데이터를 방출(emit)할 수 있으며, 이 데이터는 구독자에게 전달됩니다. 구독자는 PassthroughSubject를 구독(subscribe)하여 값을 받아올 수 있습니다. 구독자는 sink(subscriber)를 통해 데이터를 수신하고, 값을 처리하는 클로저를 제공할 수 있습니다.

import Combine

class ViewModel {
    let subject = PassthroughSubject<String, Never>()

    func fetchData() {
        // 네트워크 요청 등 비동기 작업을 수행하고, 데이터를 subject로 emit합니다.
        let data = "Hello, World!"
        subject.send(data)
    }
}

let viewModel = ViewModel()

let cancellable = viewModel.subject.sink { value in
    print(value)
}

viewModel.fetchData() // "Hello, World!" 출력

// PassthroughSubject는 값을 발생시키면 구독자에게 전달하므로, 메모리 누수를 방지하기 위해 적절히 해제해야 합니다.
cancellable.cancel()

 

반응형