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