ReactiveCocoa基礎(chǔ)

1.ReactiveCocoa(函數(shù)響應式編程 FRP)

1.面向過程
2 面向?qū)ο螅喝f物皆對象
3.鏈式編程
4.響應式編程:(Reactive Programming)萬物皆是流(KVO應用)
5.函數(shù)式編程 (Function Programming)

BeeFramework 與ReactiveCocoa 類似的一款響應式開發(fā)庫

[[self.phoneTextfield.rac_textSignal filter:^BOOL(NSString * _Nullable value) {
        NSString *str = value;
        if ([Public isValidateMobile:str]) {
            return YES;
        }else{
            self.loginButton.alpha = 0.5;
            self.phoneTextfield.textColor = kRed_BtnBg;
            return NO;
        }
    }] subscribeNext:^(NSString * _Nullable x) {
        self.loginButton.alpha = 1;
        self.phoneTextfield.textColor = kWhite;
    }];

2.聚合信號:

目前在應用中,登錄按鈕只有當用戶名和密碼輸入框的輸入都有效時才工作?,F(xiàn)在要把這里改成響應式的。
現(xiàn)在的代碼中已經(jīng)有可以產(chǎn)生用戶名和密碼輸入框是否有效的信號了——validUsernameSignal和validPasswordSignal了?,F(xiàn)在需要做的就是聚合這兩個信號來決定登錄按鈕是否可用。

RACSignal *signUpActiveSignal =
  [RACSignal combineLatest:@[validUsernameSignal, validPasswordSignal]
                    reduce:^id(NSNumber*usernameValid, NSNumber *passwordValid){
                      return @([usernameValid boolValue]&&[passwordValid boolValue]);
                    }];

注意:RACsignal的這個方法可以聚合任意數(shù)量的信號,reduce block的參數(shù)和每個源信號相關(guān)。ReactiveCocoa有一個工具類RACBlockTrampoline,它在內(nèi)部處理reduce block的可變參數(shù)。實際上在ReactiveCocoa的實現(xiàn)中有很多隱藏的技巧,值得你去看看。

3.常用

  • 分割——信號可以有很多subscriber,也就是作為很多后續(xù)步驟的源。注意上圖中那個用來表示用戶名和密碼有效性的布爾信號,它被分割成多個,用于不同的地方。

  • 聚合——多個信號可以聚合成一個新的信號,在上面的例子中,兩個布爾信號聚合成了一個。實際上你可以聚合并產(chǎn)生任何類型的信號。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容