1

我使用反应性可可信号创建了一个应用程序。在我的应用程序中,我创建了一些 RacSignals,然后将这些信号合并为一个信号并订阅它。现在,如果用户注销,我想要一种方法来取消我合并的所有信号。有没有办法一次性取消所有活动的 RacSignal?或取消合并的信号将取消合并到它的所有信号。

4

2 回答 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 回答