Combine: Subject

틀틀보·2025년 4월 25일

Combine

목록 보기
4/4

Publisher와 Subscriber의 역할을 동시에 수행할 수 있는 특별한 타입
외부에서 값을 수동으로 주입할 수 있으면서 내부적으로는 Publisher처럼 동작하여 값을 구독자에게 전달가능

PassthroughSubject

특징: 초기값 X, 구독자가 존재할 때만 값을 전달
구독자가 없을 경우 값은 전달되지 않고 사라짐

let subject = PassthroughSubject<String, Never>()

subject.sink { value in
    print("받은 값: \(value)")
}

subject.send("Hello") // 출력: 받은 값: Hello

사용자 인터렉션, 알림 등 이벤트 기반 처리에 용이

CurrentValueSubject

특징: 항상 현재 값을 보유하며, 새로운 구독자가 구독할 때 즉시 현재 값을 전달 (초기값 O)
항상 하나의 최신 값만을 보유, 이전 값 저장X

let subject = CurrentValueSubject<Int, Never>(0)

subject.sink { value in
    print("현재 값: \(value)")
}

subject.send(1) // 출력: 현재 값: 1
subject.send(2) // 출력: 현재 값: 2

로그인 상태, 설정 값 등 앱의 상태를 관리하고 공유할 때 용이

https://developer.apple.com/documentation/combine/subject

profile
안녕하세요! iOS 개발자입니다!

0개의 댓글