如何创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]; }]; }];