如何创build只接收一次信号的ReactiveCocoa订户,然后取消订阅/发布?
我目前正在注册一个属性信号的订户,如下所示:
[RACAble(self.test) subscribeNext:^(id x) { NSLog(@"signal fired!"); }];
默认的function是,它每触发一次self.test被改变,但我只想要它触发一次,然后取消订阅。 当我创build这个用户时,是否有一个“一次”参数或修饰符可以传递给RAC?
[[RACAble(self.test) take:1] subscribeNext:^(id x) { NSLog(@"signal fired!"); }];
这可能会有所帮助,尤其是当您创build嵌套的订阅时:
RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) { NSLog(@"signal fired!"); }]; [subscription dispose];
你也可以做到这一点(如果你不是整个简洁的事情):
[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]; }]; }];