我目前正在为这样的属性信号注册订阅者:
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
默认功能是每次更改 self.test 时都会触发,但我只想触发一次,然后取消订阅。创建此订阅者时,是否可以将“一次”参数或修饰符传递给 RAC?
我目前正在为这样的属性信号注册订阅者:
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
默认功能是每次更改 self.test 时都会触发,但我只想触发一次,然后取消订阅。创建此订阅者时,是否可以将“一次”参数或修饰符传递给 RAC?
[[RACAble(self.test) take:1] subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
kamil3 答案的小修复:
__block RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
[subscription dispose];
NSLog(@"signal fired!");
}];
这可能会很有帮助,尤其是在您创建嵌套订阅时:
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];
}];
}];