17

私は現在、次のようなプロパティシグナルにサブスクライバーを登録しています。

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

デフォルトの機能では、self.testが変更されるたびに起動しますが、一度起動してから登録を解除したいだけです。このサブスクライバーを作成するときにRACに渡すことができる「1回」の引数または修飾子はありますか?

4

4 に答える 4

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

これは、ネストされたサブスクリプションを作成するときに特に役立つ場合があります。

RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
         NSLog(@"signal fired!");
}];
[subscription dispose];
于 2016-07-27T18:31:27.847 に答える
0

kamil3の答えの小さな修正:

__block RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
    [subscription dispose];
    NSLog(@"signal fired!");
}];
于 2019-06-21T13:19:40.573 に答える
-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 に答える