ran 学习

//1.创建信号    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(idsubscriber) {

//3.发送信号

[subscriber sendNext:@"发送信号"];

/**

如果不在发送数据,最好发送信号完成,内部会自动调用[RACDisposable disposable]取消订阅信号

*/

[subscriber sendCompleted];

//取消订阅方法

return [RACDisposable disposableWithBlock:^{

//block调用时刻:当信号发送完成或者发送错误,就会自动执行这个block,取消订阅信号

// 执行完Block后,当前信号就不在被订阅了。

NSLog(@"信号销毁了");

}];

}];

//2.订阅信号

[signal subscribeNext:^(id x) {

NSLog(@"订阅信号:%@",x);

}];

[[_userNameTextField rac_textSignal] subscribeNext:^(NSString *x) {

NSLog(@"文本框文字发生了改变:%@",x);

}];

//    通过RAC提供的宏快速实现textSingel的监听

//    RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某个属性绑定。

//    当textField的文字发生改变时,label的文字也发生改变

RAC(self.userNameTextField,text) = self.userNameTextField.rac_textSignal;

//    监听手势

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] init];

[[tapGesture rac_gestureSignal] subscribeNext:^(id x) {

NSLog(@"view被触发tap手势");

}];

[self.view addGestureRecognizer:tapGesture];

self.view.userInteractionEnabled = YES;

// 过滤器

[[self.userNameTextField.rac_textSignal filter:^BOOL(NSString *value) {

//大于或者等于3 -->往下走。go

return value.length >= 3;

}] subscribeNext:^(id x) {

NSLog(@"%@",x);

}];

[[_LoginClick rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {

NSLog(@"按钮被点击");

}];

//      监听对象的属性值改变,转换成信号,只要值改变就会发送信号

[[View rac_valuesAndChangesForKeyPath:@"x" options:NSKeyValueObservingOptionNew observer:nil] subscribeNext:^(id x) {

NSLog(@"view的x值发生了改变");

}];

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(id x) {

NSLog(@"键盘将要出现");

}];

//    通过RAC提供的宏快速实现观察者模式

//    RACObserve(self, name):监听某个对象的某个属性,返回的是信号。

[RACObserve(self.userNameTextField,self.userNameTextField.text.length) subscribeNext:^(id x) {

NSLog(@"绿色view的x方向发生改变");

}];

[[_LoginClick rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {

//        STRONG

UserModel *wxModel = [UserModel new];

wxModel.userName = _userNameTextField.text;

wxModel.psWord = _passWordTextField.text;

[[LoginModel singalForLogin:wxModel] subscribeNext:^(NSNumber *x) {

NSLog(@"xx= %@",x);

//            STRONG

//            if (x.boolValue) {

//                [self goback];

//            }

} error:^(NSError *error) {

}];

}];

你可能感兴趣的:(ran 学习)