订阅ReactiveCocoa中的networking电话信号的正确select是什么?

我是ReactiveCocoa世界的新手,在阅读了ReactiveCocoa的最佳实践之后,我知道我需要"avoid explicit subscriptions and disposal"但是在所有关于networking和ReactiveCocoa教程中,我看到了相同的模式:创build信号(使GETPOST请求到服务器,parsing结果, sendNextsendCompleted ) – > subcsribeNext (做UI的东西或其他与结果) – > subscribeError 。 所以我们看到这里有一个明确的订阅,我认为这是不好的。

有没有一些更正确和概念上纯洁的方式来做这个共同的事情? rac_liftSelector:withSignals:或者类似的东西? 或者当我们处理networking调用和AFNetworking我们应该总是使用这种标准的订阅模式? 详细的解释将是非常有帮助的。

EDITS:

在我的应用程序中,我主要获取调用,其中一些是依赖的,其他人是单一的(绝大多数),如loginfetchWhatever ,或后postWhatever 。 所有的API调用,我用这样的模式构造( self – 是我的API manager NVMAPI类是AFHTTPSessionManager子类):

  -(RACSignal*)loginUserWithEmail:(NSString *)email andPassword:(NSString *)password { __block NSURLSessionDataTask* task; return [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { task = [self GET:kUserLoginEndpoint parameters:@{@"email": email, @"password": password} success:^(NSURLSessionDataTask *task, id responseObject) { NVMUser* user = [[NVMUser alloc] initWithDictionary:responseObject[@"user"]]; [subscriber sendNext:user]; [subscriber sendCompleted]; } failure:^(NSURLSessionDataTask *task, NSError *error) { [subscriber sendError:error]; }]; return [RACDisposable disposableWithBlock:^{ [task cancel]; }]; }] replayLazily]; } 

我不使用MVVM并使用简单的MVC。 在这里,我如何在视图控制器中进行API调用和创build信号:

 [SVProgressHUD showWithStatus:@"Processing..." maskType:SVProgressHUDMaskTypeBlack]; [[[NVMAPI api] loginUserWithEmail:self.emailTextField.text andPassword:self.passwordTextField.text] subscribeNext:^(id x) { [self.activeUser setupWithUser:x]; [SVProgressHUD dismiss]; [self performSegueWithIdentifier:kLoginSeque sender:self]; } error:^(NSError *error) { [SVProgressHUD dismiss]; [self showAlertWithText:error.localizedDescription title:@"Error"]; }]; 

所有的信号我使用相同的方式,如: fetchCommentspostStatus等。如果我有依赖的调用,我使用flattenMap 。 所以我很感兴趣 – 是创build信号和使用它们的简单方法(简单的subscribeNext )? 或者这可以用一些更正确和优雅的方式来实现?

编辑2:

我看到订阅的主要问题 – 我不知道如何实现与他们的tableview分页。 我有fetchComment方法加载分页评论 – 每页包含15条评论。 我不能既不使用subcribeNext也不使用RAC()绑定,对吗?我怎样才能pipe理这种模式?

networking通话不是特别的,你可以编写发出networking请求的信号,就像你编写任何其他信号一样。