<aside> ๐ stream์ send(_:)๋ฅผ ํธ์ถํด ๊ฐ์ ์ฃผ์ ํ ์ ์๋ Publisher
</aside>
๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
public protocol Subject : AnyObject, Publisher {
func send(_ value: Self.Output)
func send(completion: Subscribers.Completion<Self.Failure>)
func send(subscription: Subscription)
}
extension Subject Where Self.Output == Void {
public func send()
}
<aside> ๐ ๊ฐ์ฅ ์ต๊ทผ์ Published๋ ๊ฐ์ ๋ฒํผ๋ฅผ ์ ์งํ๋ Publisher
</aside>
๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
final public class CurrentValueSubject<Output, Failure> : Subject where Failure : Error {
final public var value: Output
public init(_ value: Output)
final public func receive<S>(subscriber: S) where Output == S.Input, Failure == S.Failure, S : Subscriber
final public func send(subscription: Subscription)
final public func send(_ input: Output)
final public func send(completion: Subscribers.Completion<Failure>)
}
<aside> ๐ downstream์ subscriber๋ค์๊ฒ ๊ฐ์ ์ ํ๋ Publisher
</aside>
๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋์ด ์์ต๋๋ค.
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
final public class PassthroughSubject<Output, Failure> : Subject where Failure : Error {
public init()
final public func receive<S>(subscriber: S) where Output == S.Input, Failure == S.Failure, S : Subscriber
final public func send(subscription: Subscription)
final public func send(_ input: Output)
final public func send(completion: Subscribers.Completion<Failure>)
}