2013-03-25 50 views

回答

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

感謝,這促使我將一些信號生成方法重構爲更加理智的東西。 – Jon 2013-08-02 13:55:35

-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]; 
    }]; 
}]; 
+2

沒有理由在'take:1'上使用它,它可以引入細微的錯誤(如'self'上的保留循環)。 – 2013-08-01 21:59:04

0

尤其是當你創建嵌套的預訂可能會有所幫助:

RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) { 
     NSLog(@"signal fired!"); 
}]; 
[subscription dispose];