私は現在、次のようなプロパティシグナルにサブスクライバーを登録しています。
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
デフォルトの機能では、self.testが変更されるたびに起動しますが、一度起動してから登録を解除したいだけです。このサブスクライバーを作成するときにRACに渡すことができる「1回」の引数または修飾子はありますか?
私は現在、次のようなプロパティシグナルにサブスクライバーを登録しています。
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
デフォルトの機能では、self.testが変更されるたびに起動しますが、一度起動してから登録を解除したいだけです。このサブスクライバーを作成するときにRACに渡すことができる「1回」の引数または修飾子はありますか?
[[RACAble(self.test) take:1] subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
これは、ネストされたサブスクリプションを作成するときに特に役立つ場合があります。
RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
[subscription dispose];
kamil3の答えの小さな修正:
__block RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
[subscription dispose];
NSLog(@"signal fired!");
}];
これを行うこともできます(簡潔にすることに興味がない場合):
[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];
}];
}];