ios - play - como cancelar espn+
¿Cómo creo un suscriptor de ReactiveCocoa que recibe una señal solo una vez, luego cancela la suscripción/se libera? (3)
Actualmente estoy registrando un suscriptor a una señal de propiedad como esta:
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
La funcionalidad predeterminada es que se activa cada vez que se cambia self.test, pero solo quiero que se active una vez y luego cancele la suscripción. ¿Hay un argumento o modificador "de una sola vez" que puedo pasar a RAC cuando creo este suscriptor?
Eso podría ser útil, especialmente cuando creas suscripciones anidadas:
RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
[subscription dispose];
También puedes hacer esto (si no te interesa la cuestión de la brevedad):
[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber){
RACDisposable *inner_disposer = [RACAble(self.test) subscribeNext:^(id x){
[subscriber sendNext:x];
[subscriber sendComplete];
}];
return [RACDisposable disposableWithBlock:^{
[inner_disposer dispose];
}];
}];
[[RACAble(self.test) take:1] subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];