PassthroughSubject
์ ๋ค๋ฆญ ํด๋์ค | ํ์ Subscriber์๊ฒ ์์๋ฅผ ์๋ฆฌ๋ Subject
์กด์ฌํ๋ ๋ช ๋ นํ ์ฝ๋๋ฅผ Combine ๋ชจ๋ธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ํด ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ค.
CurrentValueSubject
์๋ ๋ค๋ฅด๊ฒ ์ด๊ธฐ๊ฐ์ ๊ฐ์ง ์์ผ๋ฉฐ, ๊ฐ์ฅ ์ต๊ทผ์ ๋ฐํ๋ ์์์ ๋ํ ๋ฒํผ๋ฅผ ์ ์งํ์ง ์๋๋ค. ํ์ฌ Subject๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ ๊ทผํ ์๋ ์๋ค.
๋ ๊ฐ์ ์ ๋ค๋ฆญ ํ์
์ ๊ฐ์ง๋ค. ํ๋๋ ๊ฐ์ ํ์
์ ๋ํ๋ด๋ฉฐ, ๋ค๋ฅธ ํ๋๋ ์๋ฌ์ ํ์
์ ๋ํ๋ธ๋ค. ์๋ฌ์ ํ์
์ Error
ํ๋กํ ์ฝ์ ์ฑํํด์ผ ํ๋ค.
let subject = PassthroughSubject<Void, Never>()
subject
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine PassthroughSubject Error")
case .finished:
print("Combine PassthroughSubject Finish")
}
}, receiveValue: {
print("Combine PassthroughSubject")
})
.store(in: &cancellables)
subject.send(Void())
// Combine PassthroughSubject
subject.send(Void())
๋ฅผ ํธ์ถํ ์์ ์ Subject์ ๊ฐ์ ์ ๋ฌํ์์ผ๋ฏ๋ก ๊ฐ์ ๋ฐ์ ๊ฒ์ ๋ํ ํด๋ก์ ๊ฐ ์คํ๋๋ค.
RxSwift
PublishSubject
๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
let subject = PublishSubject<Void>()
subject
.subscribe(onNext: {
print("RxSwift PassthroughSubject")
}, onError: { _ in
print("RxSwift PassthroughSubject Error")
}, onCompleted: {
print("RxSwift PassthroughSubject Finish")
})
.disposed(by: disposeBag)
subject.onNext(Void())
// RxSwift PassthroughSubject
onNext(_:)
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Subject์ ๊ฐ์ ์ ๋ฌํ๋ค.
ReactiveSwift
MutableProperty
๋ฅผ ์ฌ์ฉํ๊ณ signal
ํ๋กํผํฐ๋ฅผ ํตํด Signal์ ๋ง๋ค์ด ๊ตฌํํ ์ ์๋ค.
let property = MutableProperty(Void())
property.signal
.observe { event in
switch event {
case .value:
print("ReactiveSwift PassthroughSubject")
case .failed:
print("ReactiveSwift PassthroughSubject Error")
case .completed:
print("ReactiveSwift PassthroughSubject Finish")
default:
break
}
}
property.value = Void()
// ReactiveSwift PassthroughSubject
// ReactiveSwift PassthroughSubject Finish
value
ํ๋กํผํฐ์ ๊ฐ์ ํ ๋นํ์ฌ Property์ ๊ฐ์ ์ ๋ฌํ๋ค.
MutableProperty
๋ก๋ถํฐ producer
ํ๋กํผํฐ๋ฅผ ํตํด SignalProducer๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค๋ฉด, MutableProperty
์ ์ด๊ธฐ๊ฐ์ด ํ๋ฅด๊ฒ ๋๋ฏ๋ก PassthroughSubject
์ ๋์์ ๊ตฌํํ ์ ์๋ค.
์ค์ฝํ๋ฅผ ๋ฒ์ด๋ ๋ property
๊ฐ ํด์ ๋์ด Signal๋ ์ข
๋ฃํ๋ ๋ชจ์ต์ ๋ณด์ฌ์ค๋ค.
์ฐธ๊ณ
Last updated
Was this helpful?