ran 學(xué)習(xí)

//1.創(chuàng)建信號(hào)? ? RACSignal *signal = [RACSignal createSignal:^RACDisposable *(idsubscriber) {

//3.發(fā)送信號(hào)

[subscriber sendNext:@"發(fā)送信號(hào)"];

/**

如果不在發(fā)送數(shù)據(jù),最好發(fā)送信號(hào)完成,內(nèi)部會(huì)自動(dòng)調(diào)用[RACDisposable disposable]取消訂閱信號(hào)

*/

[subscriber sendCompleted];

//取消訂閱方法

return [RACDisposable disposableWithBlock:^{

//block調(diào)用時(shí)刻:當(dāng)信號(hào)發(fā)送完成或者發(fā)送錯(cuò)誤,就會(huì)自動(dòng)執(zhí)行這個(gè)block,取消訂閱信號(hào)

// 執(zhí)行完Block后,當(dāng)前信號(hào)就不在被訂閱了。

NSLog(@"信號(hào)銷毀了");

}];

}];

//2.訂閱信號(hào)

[signal subscribeNext:^(id x) {

NSLog(@"訂閱信號(hào):%@",x);

}];

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

NSLog(@"文本框文字發(fā)生了改變:%@",x);

}];

//? ? 通過RAC提供的宏快速實(shí)現(xiàn)textSingel的監(jiān)聽

//? ? RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于給某個(gè)對(duì)象的某個(gè)屬性綁定。

//? ? 當(dāng)textField的文字發(fā)生改變時(shí),label的文字也發(fā)生改變

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

//? ? 監(jiān)聽手勢(shì)

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

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

NSLog(@"view被觸發(fā)tap手勢(shì)");

}];

[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(@"按鈕被點(diǎn)擊");

}];

//? ? ? 監(jiān)聽對(duì)象的屬性值改變,轉(zhuǎn)換成信號(hào),只要值改變就會(huì)發(fā)送信號(hào)

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

NSLog(@"view的x值發(fā)生了改變");

}];

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

NSLog(@"鍵盤將要出現(xiàn)");

}];

//? ? 通過RAC提供的宏快速實(shí)現(xiàn)觀察者模式

//? ? RACObserve(self, name):監(jiān)聽某個(gè)對(duì)象的某個(gè)屬性,返回的是信號(hào)。

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

NSLog(@"綠色view的x方向發(fā)生改變");

}];

[[_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) {

}];

}];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容