淺談iOS MVC 學(xué)習(xí)基礎(chǔ)
iOS MVC 學(xué)習(xí)基礎(chǔ)是本文要介紹的內(nèi)容,先來看內(nèi)容。相信說起MVC(Model-View-Controller)大家都很熟悉。在iOS開發(fā)中MVC的機制被使用的***,并且我覺得在iOS上寫程序,充分理解iOS的MVC模式,有助于我們程序的組織合理性,相反,我們不遵守MVC的一些約定,程序是可以寫的,但就等著受苦了。
下面我只對一些約定列一個表,并且說一下iOS的支持機制啊,算分享給大家:
1、Model不允許和Controller,View打交道。也就是Model根本不知道誰會用自己,Model中不能有任何對Controller和View的引用。正所謂:Don't call me, I will call you.就是給Model設(shè)計說的。
我們再想想,在一般程序中Model到處被拿去用,它要維護到底誰用真的很難。那你會問:兄弟,那當Model的數(shù)據(jù)變了,我怎么通知視圖更新呢?這里常用的機制就是廣播模式,或者電臺模式,或者事件機制都行。在iOS中有兩種支持機制:Notification和KVO(Key-Value Observing)。
這兩種東西原理差不多,KVO是iOS中的一個核心概念,簡單理解就是:關(guān)注Model某個數(shù)據(jù)(Key)的對象可以注冊為監(jiān)聽器,一旦Model某個Key的Value發(fā)生變化,就會廣播給所有的監(jiān)聽器。這和Flex,JavaFX中的綁定都是一個道理。
2、View不允許直接引用Controller和Model,它很專一地被Controller控制來進行數(shù)據(jù)的顯示和接收用戶的交互。我們知道View顯示的時候需要數(shù)據(jù),我們也知道在View上會產(chǎn)生事件。如果要達到不和Controller,Model直接打交道,就需要機制來支持。
在Objective-C中有Protocol的東西,并且提出Delegate(代理模式)就是來解決UIView想和Controller松耦合互動問題的。除了這個外,iOS還提供了Action-Target模式來讓Controller監(jiān)聽View的事件。那對View如何獲得數(shù)據(jù),iOS中提了Data Source的概念,其實也是Protocol的應(yīng)用。
3、每一次推給用戶的一個操作屏幕,***都是MVC的三者組合,不要出現(xiàn)一組以上的MVC組合。
小結(jié):關(guān)于淺談iOS MVC 學(xué)習(xí)基礎(chǔ)的內(nèi)容介紹完了,希望本文對你有所幫助!