MVVM Tutorial with ReactiveCocoa筆記

  1. MVVM架構(gòu)的核心是View-Model,View-Model是一種特殊的Model,它代表了應(yīng)用UI的各種狀態(tài).
    它包含了描述各種UI管理的狀態(tài)的屬性.例如一個TextField中當(dāng)前的text,一個button是否是enable狀態(tài).同時它也向外界提供當(dāng)前View可以執(zhí)行的action,例如button的點擊和手勢的觸發(fā).

  2. MVVM需要遵循以下規(guī)則

  • View持有ViewModel,但是反過來不可以
  • ViewModel持有Model,但是反過來不可以
  1. 這個模式最直接的好處如下:
  • 輕量級的View --- 因為所有的UI邏輯都存在于ViewModel中,所以View會非常輕量級
  • 測試 --- 可以再沒有不依賴View的情況下運(yùn)行程序,極大增強(qiáng)了可測試性
  1. MVVM架構(gòu)依賴于數(shù)據(jù)綁定,并且是雙向的數(shù)據(jù)綁定,ViewModel的屬性發(fā)生了變化要傳遞給UI,UI上用戶輸入了變化也要傳遞給ViewModel.

  2. UIButton的rac_command屬性跟RACCommand實例綁定后,可以控制UIButton的enable狀態(tài),同時,點擊UIButton的時候執(zhí)行該command(validSearchSignal傳遞YES的時候button可點擊,傳遞NO的時候Button不可點擊)

[[RACCommand alloc] initWithEnabled:validSearchSignal
    signalBlock:^RACSignal *(id input) {
      return  [self executeSearchSignal];
    }];

self.searchButton.rac_command = self.viewModel.executeSearch;
  1. RACCommand的executing屬性可以用來判斷當(dāng)前的command是否正在執(zhí)行

  2. not方法可以將RACSignal中傳遞的值取反

  3. RACCommand的executionSignals屬性會把每次command執(zhí)行的時候創(chuàng)建的signal傳出來(如果command綁定的button,并且點擊button的時候需要做一些操作,可以用這個屬性)

[self.viewModel.executeSearch.executionSignals
  subscribeNext:^(id x) {
    [self.searchTextField resignFirstResponder];
  }];
  1. The ViewModel exposes properties that represent the UI state, it also exposes commands — and often methods — that represent UI actions. It’s responsible for managing changes to the UI state based on user interactions.
    However, it’s not responsible for the actual business logic that executes because of these interactions. That is the job of the Model.
  2. MVVM結(jié)構(gòu)總結(jié)

1.model層提供服務(wù)和業(yè)務(wù)邏輯,在Flickr這個例子里,model層提供Flickr搜索照片的服務(wù)

  1. View-Model層代表了整個應(yīng)用UI的各種狀態(tài),同時它也對用戶交互和和來自Model層的事件進(jìn)行回應(yīng)(UI狀態(tài)的改變).
  2. View層功能非常簡單,它只提供View-Model層各種狀態(tài)的展示和用戶交互.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纠炮,一起剝皮案震驚了整個濱河市月趟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恢口,老刑警劉巖孝宗,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耕肩,居然都是意外死亡因妇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門猿诸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婚被,“玉大人,你說我怎么就攤上這事梳虽≈沸荆” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谷炸。 經(jīng)常有香客問我北专,道長,這世上最難降的妖魔是什么旬陡? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任拓颓,我火速辦了婚禮,結(jié)果婚禮上描孟,老公的妹妹穿的比我還像新娘驶睦。我一直安慰自己,他們只是感情好匿醒,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布场航。 她就那樣靜靜地躺著,像睡著了一般青抛。 火紅的嫁衣襯著肌膚如雪旗闽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天蜜另,我揣著相機(jī)與錄音适室,去河邊找鬼。 笑死举瑰,一個胖子當(dāng)著我的面吹牛捣辆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播此迅,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼汽畴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耸序?” 一聲冷哼從身側(cè)響起忍些,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坎怪,沒想到半個月后罢坝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡搅窿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年嘁酿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片男应。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡闹司,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沐飘,到底是詐尸還是另有隱情游桩,我是刑警寧澤牲迫,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站众弓,受9級特大地震影響恩溅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谓娃,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜒滩。 院中可真熱鬧滨达,春花似錦、人聲如沸俯艰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竹握。三九已至画株,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啦辐,已是汗流浹背谓传。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留芹关,地道東北人续挟。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓炬称,卻偏偏與公主長得像肺素,于是被迫代替她去往敵國和親焚鲜。 傳聞我的和親對象是個殘疾皇子戒劫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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