我目前註冊用戶到物業信號是這樣的:如何創建僅接收一次信號的ReactiveCocoa訂戶,然後取消訂閱/發佈?
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
默認功能是,它激發每一次self.test改變,但我只是想它開火一次,然後退訂。當我創建此用戶時,是否有可以傳遞給RAC的「一次」參數或修飾符?
我目前註冊用戶到物業信號是這樣的:如何創建僅接收一次信號的ReactiveCocoa訂戶,然後取消訂閱/發佈?
[RACAble(self.test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
默認功能是,它激發每一次self.test改變,但我只是想它開火一次,然後退訂。當我創建此用戶時,是否有可以傳遞給RAC的「一次」參數或修飾符?
[[RACAble(self.test) take:1] subscribeNext:^(id x) {
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];
}];
}];
沒有理由在'take:1'上使用它,它可以引入細微的錯誤(如'self'上的保留循環)。 – 2013-08-01 21:59:04
尤其是當你創建嵌套的預訂可能會有所幫助:
RACDisposable *subscription = [RACObserve(self, test) subscribeNext:^(id x) {
NSLog(@"signal fired!");
}];
[subscription dispose];
感謝,這促使我將一些信號生成方法重構爲更加理智的東西。 – Jon 2013-08-02 13:55:35