好了,我做大死的連續第五天奮鬥在電腦跟前了,好的。html
接着上次寫的iOS開發框架MVVM 1理解開發模式(佔坑,未寫完)來繼續聊聊咱們的MVVM。ios
昨天聊了網絡層的封裝,今天聊聊開發模式,架構師應該乾的事情。我一個編程界的新手也想聊聊,昨天說了要作高素質的流氓。今兒只是聊聊我對MVC和MVVM的感覺和想法,具體的概述看我第一篇介紹。由於打字的時候就不會亂七八糟的想一些事情了。面試
再次強調。今天只聊思想,概述,國慶結束以前必定上代碼,純乾貨。保證你能上手簡單的MVVM。數據庫
開始今天的話題。編程
爲何先聊Model,由於不管是MVC仍是MVVM。都有一個是統一的,那就是Model。json
仍是那句話,全聊我本身的思考和見解。和專業的解釋有差距還輕噴。網絡
以前也說過我對Model的理解,今天從新聊聊什麼是Model。我以爲作後臺的同窗能夠更好的理解Model。Model就是一系列和數據庫有關的東西,對數據的操做等等。架構
那麼在iOS裏呢。框架
在任何一個App裏都會有數據獲取的地方。在iOS裏就是Model層。mvvm
後臺給咱們傳輸數據的時候傳輸的都是json數據,那麼咱們必需要將json轉model。這也是大公司面試喜歡問的,怎麼json轉Model。
說到這,必需要說個東西。對象。
json轉換成Model,其實就是將json轉換成一個對象。而後對這個對象進行操做。咱們獲得Model以後就能夠用"."操做符來對Model裏的屬性進行操做了。
json轉Model以後,咱們的Model層裏就有了數據。
因此說,不少狀況下,咱們稱爲Model爲模型,前段時間上軟件工程這門課,老師好像是說叫數據層,我以爲這個稱呼很是的合理。
咱們常說解析json解析json,類比後臺的建表,咱們的Model實際上就是把建表變成了json的映射而已。
固然,若是隻把Model層解釋爲json數據的解析,確定是有問題的。當咱們從本地數據庫取數據的時候,仍是須要用Model來解析,這基本上和後臺就更像了,可是不一樣的是,咱們把本地數據庫裏的數據取出來以後,在此轉換爲一個對象。而後去使用。
最後來總結一下Model。Model層能夠沒有嗎,固然不能,由於不管是後臺開發仍是App,Model層是一切數據的來源。數據來了纔能有一個完成的App。但實際上來講,咱們調用Model層的語句可能不多。最主要代碼仍是集中在VC或者是VVM。
爲何不直接聊MVC,由於MVC是大衆開發iOS的模式。不管是後臺仍是iOS,雖說iOS的MVC和後臺的有差異,可是仍是沒啥好說的。是個iOS開發都知道MVC。在此也不作過多的闡述。
直接聊聊iOS中MVC的弊端。實際上能夠說只聊聊VC。
我只寫過一點點Rails。先來講說我對Rails的MVC的見解,再和iOS的MVC一比較,立馬就看出弊端了。
在rails中,C是對於View中的方法進行描述。舉個最簡單的例子,咱們在View中須要實現index,列出全部文章的列表。那麼就在C中寫index函數的定義就行了。不用在View裏寫任何東西。
而View,就是你所看到的html網頁。只須要加上簡單的觸發動做等等就ok。
好了,到這大概能明白View和C的關係了。
下面來講說iOS中的MVC
MVC,實際上的爲的就是讓各個層次負責不一樣的任務。那麼View,Controller應該分開。
可是在iOS中,咱們的View視圖和Controller是在一塊兒的!咱們只能經過對View的抽象來調用,可是免不了在Controller裏寫下大量的View代碼。
這就是問題了。
以前的一篇博客也聊過這個問題。
因此針對Controller和View分不開的問題,根據WF的架構方式,提出了MVVM。
那麼,今天的半乾貨部分。自此開始。
想了一下,與其廢話半天說MVVM和MVC不如直接解釋MVVM每部分到底在幹嗎,這樣一說,立馬就知道MVVM的好處了。
在MVC中,佔據咱們很大代碼量的是什麼。一是大量的View視圖,二是大量的網絡請求,三是部分邏輯。
而在MVVM中,咱們的ViewModel層幹啥,一是作網絡請求,二是邏輯的實現
我不貼圖了,我以爲看了那麼多文章都不如直接說每部分是幹什麼的這樣直接了當。
因此綜合比較一下。下面MVC分別用M1,V1,C1來表示,MVVM用M2,V2,VM2來表示,看看發生了什麼變化。
M1->M2 沒變化
C1->V2 之後iOS中的ViewController便是今天的View。少了網絡請求和邏輯處理部分,只對View進行操做
V1->V2 對於我我的來講,之後我會再單獨抽象一個View在MVVM中來處理Common的View還有須要封裝的View。
C1->VM2 這裏VM2,只進行邏輯和網絡請求等等。
那麼,在MVVM中最重要的是什麼?是數據的綁定。
具體能夠看WF的架構。
咱們採用RAC是爲了將MVVM中的三個部分的數據進行綁定,一旦某個部分的數據有改變,那麼綁定的另外一個界面的數據就會改變。
好的,其實真正關鍵的沒多少話,都標記了。這些大概明白,後面進行起來就快了。
這我會在後面的博客開始敘述的。
這系列的博客想幹什麼。
對最近學習MVVM的一個總結。
MVVM困惑了我快一年了,我想採用這種新的開發模式來開發了。
我想用最通俗的語言,一個學生黨的語言來更快的讓你上手MVVM。
讓創萌工做室之後的iOS開發能夠更快的學習iOS開發。
我會一點點的來解釋ViewModel層在幹什麼。這是第一篇博客,理論部分已經普及差很少了。
下一部分,咱們開始利用RAC來分離業務邏輯的代碼。後面的文章每篇文章會上代碼上demo,也不寫多內容,每次一點點,多寫幾篇博客。
我相信我寫完你看完,咱們都能征服MVVM!