淺談iOS MVC 學習基礎

來源:互聯網
上載者:User

本來我想自己寫一篇關於這個話題的文章,但是看到網上已經有了,所以就轉載過來給大家作為參考。

原帖地址:http://blog.chinabyte.com/a/1557371.html

iOS MVC 學習基礎是本文要介紹的內容,先來看內容。相信說起MVC(Model-View-Controller)大家都很熟悉。在iOS開發中MVC的機制被使用的淋漓盡致,並且我覺得在iOS上寫程式,充分理解iOSMVC模式,有助於我們程式的組織合理性,相反,我們不遵守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組合。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.