iOS開發新架構ReactiveCocoa簡介

來源:互聯網
上載者:User

ReactiveCocoa(其簡稱為RAC)是由Github 開源的一個應用於iOS和OS X開發的新架構。RAC具有函 數式編程和響應式編程的特性。它主要吸取了.Net的 Reactive Extensions的設計和實現。本文將詳細 介紹該架構試圖解決什麼問題,以及其用法與特點。

ReactiveCocoa試圖解決什麼問題

經過一段時間的研究,我認為ReactiveCocoa試圖解決以下3個問題:

傳統iOS開發過程中,狀態以及狀態之間依賴過多的問題

傳統MVC架構的問題:Controller比較複雜,可測試性差

提供統一的訊息傳遞機制

傳統iOS開發過程中,狀態以及狀態之間依賴過多的問題

我們在開發iOS應用時,一個介面元素的狀態很可能受多個其它介面元素或後台狀態的影響。

例如,在使用者帳戶的登入介面,通常會有2個輸入框(分別輸入帳號和密碼)和一個登入按鈕。如果 我們要加入一個限制條件:當使用者輸入完帳號和密碼,並且登入的網路請求還未發出時,確定按鈕才可 以點擊。通常情況下,我們需要監聽這兩個輸入框的狀態變化以及登入的網路請求狀態,然後修改另一 個控制項的enabled狀態。

傳統的寫法如下(該範例程式碼修改自ReactiveCocoa官網 ) : https://github.com/ReactiveCocoa/ReactiveCocoa

static void *ObservationContext = &ObservationContext;(void)viewDidLoad {    [super viewDidLoad];        [LoginManager.sharedManager addObserver:self             forKeyPath:@"loggingIn"                                    options:NSKeyValueObservingOptionInitial             context:&ObservationContext];    [self.usernameTextField addTarget:self action:@selector(updateLogInButton)             forControlEvents:UIControlEventEditingChanged];    [self.passwordTextField addTarget:self action:@selector(updateLogInButton)            forControlEvents:UIControlEventEditingChanged];}- (void)updateLogInButton {    BOOL textFieldsNonEmpty = self.usernameTextField.text.length > 0 && self.passwordTextField.text.length > 0;    BOOL readyToLogIn = !LoginManager.sharedManager.isLoggingIn && !self.loggedIn;    self.logInButton.enabled = textFieldsNonEmpty && readyToLogIn;}- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object                        change:(NSDictionary *)change context:(void *)context {    if (context == ObservationContext) {        [self updateLogInButton];    } else {        [super observeValueForKeyPath:keyPath ofObject:object                               change:change context:context];    }}  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.