在ReactiveCocoa中,subscribeError:
方法与catch:
之间的区别是什么?为什么要在catch:
中返回信号?
答案 0 :(得分:32)
-subscribeError:
实际订阅:这是该行的结尾。而-catch:
只是将信号转换为新信号(并且实际上不会订阅)。把信号想象成一个程序。当你-subscribeError:
时,你告诉计算机“我想要运行这个程序,但我只想听到它错误的消息。”当你-catch:
时,你说“我有这个程序可能会抛出错误,我想根据处理错误的旧程序制作一个新程序。”
您必须在-catch:
中返回信号的原因是它不仅仅是为了压制错误:它实际上是为了响应错误。一旦原始信号出错,它就好了:如果你想让结果信号在失败后继续运行,你必须在-catch:
中给出一个新的信号。
您可以在-catch:
中执行的操作示例:
[RACSignal empty]
。[RACSignal error:err]
。