在 MVVM 中使用 RACSubject 可以非常方便地实现统一的错误处理逻辑。

比如,我们可以在 viewModel 的基类中声明一个 RACSubject 类型的属性 errors ,然后在 viewController 的基类中编写统一的错误处理逻辑:

[self.viewModel.errors subscribeNext:^(NSError *error) {
    // 错误处理逻辑
}

此时,假设在某个界面的 viewModel 中有三个用来请求远程数据的命令,分别是 requestReadmeMarkdownCommand 、requestBlobCommand 和 requestReadmeHTMLCommand ,那么这个界面的错误处理逻辑就可以这么写:

[[RACSignal
    merge:@[
        self.requestReadmeMarkdownCommand.errors,
        self.requestBlobCommand.errors,
        self.requestReadmeHTMLCommand.errors
    ]]
    subscribe:self.errors];