我使用反应性可可信号创建了一个应用程序。在我的应用程序中,我创建了一些 RacSignals,然后将这些信号合并为一个信号并订阅它。现在,如果用户注销,我想要一种方法来取消我合并的所有信号。有没有办法一次性取消所有活动的 RacSignal?或取消合并的信号将取消合并到它的所有信号。
问问题
1156 次
2 回答
1
在 GitHub 上检查这个问题。
所以你可以做某事。像这样:
RACDisposable *disposable = [[RACSignal combineLatest:@[signal1,signal2]]
subscribeError:^(NSError *error) {}];
当你想取消时:
[disposable dispose];
于 2015-01-22T09:23:20.320 回答
0
Mateusz 是对的,但我感觉你并不完全确定处理 a 的语义是什么RACDisposable
。所以这里是:
在 Mateusz 的示例中,只有订阅被取消(处置),但信号仍然存在(当然,只要它没有被释放)。
即使没有订阅它, ARACSignal
仍然存在,并且只要它没有因错误或完整事件而结束,它就可以继续发送下一个值。
如果通过“取消”信号您的意思是停止订阅下一个值,那么处置一次性是要走的路。如果“取消”意味着完成信号,那么看看takeUntil:
方法,它会在您方便的时候完成返回信号(但这仍然不会完成原始信号)
希望能有所帮助
于 2015-04-22T11:20:12.773 回答