17

我目前正在为这样的属性信号注册订阅者:

[RACAble(self.test) subscribeNext:^(id x) {
        NSLog(@"signal fired!");
 }];

默认功能是每次更改 self.test 时都会触发,但我只想触发一次,然后取消订阅。创建此订阅者时,是否可以将“一次”参数或修饰符传递给 RAC?

4

4 回答 4

31
[[RACAble(self.test) take:1] subscribeNext:^(id x) {
    NSLog(@"signal fired!");
}];
于 2013-03-25T17:37:07.630 回答
0

kamil3 答案的小修复:

__block RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
    [subscription dispose];
    NSLog(@"signal fired!");
}];
于 2019-06-21T13:19:40.573 回答
0

这可能会很有帮助,尤其是在您创建嵌套订阅时:

RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
         NSLog(@"signal fired!");
}];
[subscription dispose];
于 2016-07-27T18:31:27.847 回答
-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];
   }];
}];
于 2013-08-01T12:12:06.030 回答