suscripcion play eliminar cuenta como cancelar ios objective-c reactive-programming reactive-cocoa

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!"); }];