我目前正在向这样的房产信号注册订户:
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
默认功能是它每次都会自动触发self.test被更改,但我只想要触发一次,然后取消订阅。在创建此订阅者时,是否存在可以传递给RAC的“一次”参数或修饰符?
答案 0 :(得分:31)
[[RACAble(self.test) take:1] subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
答案 1 :(得分:0)
特别是在创建嵌套订阅时,这可能会有所帮助:
RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
[subscription dispose];
答案 2 :(得分:0)
kamil3 answer的小修正:
__block RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
[subscription dispose];
NSLog(@"signal fired!");
}];
答案 3 :(得分:-1)
你也可以这样做(如果你不是整个简洁的事情):
[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];
}];
}];