Subject는 Publisher과 Subscriber 두 개념의 역할을 모두 할 수 있는 개념이에요.
즉 데이터 발행과 구독이 모두 가능합니다!
Combine에는 두 가지 유형의 Subject가 있어요.
- PassthroughSubject
- CurrentValueSubject
다른 글에서 이 두 Subject에 대한 개념을 자세히 알아보고, 여기에서는 Subject 공통의 특징에 대해서만 짚고 넘어갈게요.
특징
- 데이터 스트림에 값을 방출할 수도 있고, Subscriber로부터 데이터를 받을 수도 있어요.
- 명확한 Output 타입과 Failure 타입을 지정해야 해요.
- 하나의 이벤트 소스로부터 여러 구독자에게 데이터를 전송할 수 있는 멀티캐스트 기능을 지원해요. 동일한 데이터 스트림을 여러곳에서 관찰하거나 핸들링 할 때 유용해요.
- 여러 스레드에서 동시에 subject에 접근할 수 있기 때문에 기본적으로 스레드 안전(Thread Safety) 하지 않아요.
- 동적으로 구독자를 추가하거나 제거할 수 있어요.
- 자동으로
.finished
와 같은 완료 이벤트를 발행하지 않아요.