są również odpowiedzi ważne dla wersji Swift?
Wyobraź sobie SignalPipe obserwując zmiany we właściwości obiektu. Podczas subskrybowania sygnału z kilku innych obiektów, tj. queue.queueCountSignal.observeNext({...})
, blok obserwacyjny zostanie wykonany przy następnym zmianie właściwości. Czy istnieje sposób na pytanie o aktualną wartość lub wyzwolenie obserwujNextBlock?
Nie chcę używać SignalProducer (który może być uruchamiany jawnie), ponieważ oznaczałoby to, że potrzebuję zebrać bloki observeNext
z każdego obiektu, który jest potrzebny. Nie chcę też tworzyć kilku producentów sygnału dla tego samego - czy jest to rzeczywiście potrzebne?
Oto przykładowy kod do bardziej jasne
import ReactiveCocoa
class SwipingQueueWithSignals<T> : SwipingQueue<T> {
override var count: Int {
didSet(oldQueueCount) {
let newQueueCount = self.count
queueCountSignalObserver.sendNext(newQueueCount)
}
let queueCountSignal: Signal<Int, NoError>
private let queueCountSignalObserver: Observer<Int, NoError>
init() {
(self.queueCountSignal, self.queueCountSignalObserver) = Signal<Int, NoError>.pipe()
super.init()
}
}
// Something like this
queue.queueCountSignal.
.observeNext { next in print(next) }
.lookupCurrentValueNow()
Dziękuję. Chciałem tylko mieć pewność. Czasami istnieje pokusa, aby nie konwertować wszystkiego na świat ReactvieCocoa. –
Ale mogę zrobić: RAC (self.number) = sygnał; a następnie użyć self.number w pewnym miejscu. –
@ LeszekŻarna Tak, to zaktualizuje 'self.number' o najnowszą wartość sygnału, ale nadal zależy od pojęcia _subscription_ underneath. Zrozumienie, jak działają subskrypcje, sprawi, że pozostała część RAC będzie łatwiejsza do zdobycia. –