监听UITextView控件 text属性
    @weakify(self);    [self.textViewAdvice.rac_textSignal subscribeNext:^(NSString *content){        @strongify(self);        self.textFieldPlaceholder.hidden = (content && content.length > 0);    }];
监听UIButton控件 UIControlEventTouchUpInside事件
    @weakify(self)    [[self.buttonLogin      rac_signalForControlEvents:UIControlEventTouchUpInside]     subscribeNext:^(id x) {         @strongify(self)             [MBProgressHUD showHUDAddedTo:self.view                                  animated:NO];             [self.loginVM sendLogin];     }];
监听UITextField数值 赋值ViewModel
RAC(self.loginVM, username) = _textFieldAccount.rac_textSignal;
监听ViewModel数值 赋值UILabel
RAC(self.labelRoundNumber, text) = RACObserve(self.homePageVM, waitNum);
自定义RACSubject消息
@property (nonatomic, strong, readwrite) RACSubject *successLogin;@property (nonatomic, strong, readwrite) RACSubject *failureLogin;- (void)initialize {    _successLogin = [RACSubject subject];    _failureLogin = [RACSubject subject];}
消息RACSubject传递
- (void)sendLogin {    NSDictionary *dictParams = @{                                 @"UserName":self.username,                                 @"PassWord":self.password                                 };    @weakify(self);    [WebServiceManager requestLoginWithParams:dictParams                                     andBlock: ^(id data, id error) {                                         @strongify(self);                                         if (error) {                                             return;                                         }                                         if ([data isMemberOfClass:[UserModel class]]) {                                             [self.successLogin sendNext:userModel];                                         }                                         else {                                             [self.failureLogin sendNext:(NSString *)data];                                         }                                     }];}
消息RACSubject接收
    @weakify(self)    [self.loginVM.successLogin subscribeNext:^(UserModel *userModel) {        @strongify(self);        [UserModel userModel:userModel];        [HomePageVC rootViewController];        [MBProgressHUD hideHUDForView:self.view                             animated:YES];    }];        [self.loginVM.failureLogin subscribeNext:^(NSString *data) {        @strongify(self);        self.textFieldAccount.text = @"";        self.textFieldPassword.text = @"";        kMRCError(data);        [MBProgressHUD hideHUDForView:self.view                             animated:YES];    }];
监听键盘通知
    [[[NSNotificationCenter defaultCenter]      rac_addObserverForName:UIKeyboardWillShowNotification      object:nil]     subscribeNext:^(NSNotification *notification) {         NSDictionary *info = [notification userInfo];         NSValue *keyboardFrameValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];         CGRect keyboardFrame = [keyboardFrameValue CGRectValue];         CGFloat height_temp = 195 - (kViewHeight(self.view) - keyboardFrame.size.height - 90) / 2;         [_scrollViewMaster setContentOffset:CGPointMake(0, height_temp)                                    animated:YES];     }     ];        [[[NSNotificationCenter defaultCenter]      rac_addObserverForName:UIKeyboardWillHideNotification      object:nil]     subscribeNext:^(NSNotification *notification) {         [_scrollViewMaster setContentOffset:CGPointMake(0, 0)                                    animated:YES];     }     ];    [[NSNotificationCenter defaultCenter] removeObserver:self                                                    name:UIKeyboardWillShowNotification                                                  object:nil];    [[NSNotificationCenter defaultCenter] removeObserver:self                                                    name:UIKeyboardWillHideNotification                                                  object:nil];