たまたまAppleの新しいCombineフレームワークを調べたところ、2つのことがわかりました。
PassthroughSubject<String, Failure>
CurrentValueSubject<String, Failure>
誰かが私にそれらの意味と使用法を説明できますか?
PassthroughSubject
とCurrentValueSubject
はどちらもPublisher
s(Combineによって導入されたタイプ)であり、サブスクライブできます(値が使用可能なときに値に対して操作を実行します)。
どちらもCombineパラダイムの使用に簡単に移行できるように設計されています。どちらにも値とエラータイプがあり、値を「送信」することができます(すべてのサブスクライバーが値を使用できるようにします)。
私が見た2つの主な違いは、CurrentValueSubject
が値で始まるのに対し、PassthroughSubject
は値ではないということです。 PassthroughSubject
は、少なくとも私にとっては、概念的に把握しやすいようです。
PassthroughSubject
は、デリゲートパターンの代わりに、または既存のデリゲートパターンをCombineに変換するために簡単に使用できます。
//Replacing the delegate pattern
class MyType {
let publisher: PassthroughSubject<String, Never> = PassthroughSubject()
func doSomething() {
//do whatever this class does
//instead of this:
//self.delegate?.handleValue(value)
//do this:
publisher.send(value)
}
}
//Converting delegate pattern to Combine
class MyDel: SomeTypeDelegate {
let publisher: PassthroughSubject<String, Never> = PassthroughSubject()
func handle(_ value: String) {
publisher.send(value)
}
}
これらの例はどちらも、値のタイプとしてString
を使用していますが、何でもかまいません。
お役に立てれば!