iOS/Combine
PassthroughSubject vs CurrentValueSubject
까칠코더
2023. 12. 1. 21:33
반응형
Combine에서 자주 사용하는 Publisher와 같은 개념중에 구독자(subscriber)에게 전달하는데 사용되는
PassthroughSubject와 CurrentValueSubject는 값을 저장하느냐 마느냐의 차이점이 있습니다.
PassthroughSubject | CurrentValueSubject | |
값 저장 여부 | 저장하지 않음 | 저장 |
RxSwift에서 유사한 기능 | PublishSubject | BehaviorSubject |
- PassthroughSubject
값을 저장하지 않고 데이터를 방출(emit) 합니다.
let subject = PassthroughSubject<String, Never>()
subject.sink { value in
print(value)
}
subject.send("Hello, World!") // Hello, World! 출력
공식 문서 : https://developer.apple.com/documentation/combine/passthroughsubject
- CurrentValueSubject
값을 저장하고 데이터를 방출(emit) 합니다.
또한, 초기값을 지정해줘야 하며, value 프로퍼티에 값을 설정함으로써 send()와 동일한 동작하는것이 가능합니다.
let subject = CurrentValueSubject<String, Never>("Hello, World!")
subject.sink { value in
print(value)
}
// Hello, World! 출력
subject.send("Hello") // Hello 출력
subject.value = "World!" // World! 출력
공식문서 : https://developer.apple.com/documentation/combine/currentvaluesubject
반응형