close

iOS裏,所有的設計都遵循於MVC pattern,這是為何要了解MVC的所在,也是所有想寫iOS的設計者必須了解的原理。

須特別注意的是iOS裡,UI是屬於View,而不是Controller。

 

以下參照至github的MVC圖像 https://github.com/sebastienwindal/iOSPatterns/wiki/standard-iOS-patterns

undefined

圖中使用雙黃線/單向超車線明確指出MVC如何動作

MODEL

 所有資料。

 MODEL可以間接與Control溝通的方式

Notification   & Key-value Observing

有時候MODEL內的資料會變化,CONTROLLER必須要知道這些。


流程是:

MODEL發生變化時會藉由廣播的方式,發送一些資訊給關注此MODEL的CONTROLLER,稱之為KVO,使CONTROLLER做出對應的改變

VIEW

 使用者的可視範圍。

 reference:  target-action in apple developer  

                   delegate&datasource in apple developer

 VIEW可以間接與Control溝通的方式

Target-action

由CONTROLLER指定以下兩項:

一個Target(是一個CONTROLLER),

一個Action,這個action被賦予在VIEW裡,


流程是:

使用者對VIEW做些改變,VIEW(Sender)會發送訊息(Send)給Target,做些對應動作

Delegate

當VIEW發生某種變化時,由於我們不會給予VIEW太多邏輯,使之能做出回應。


流程是:

當VIEW發生變化,會發送訊息給特定CONTROLLER,做出對應動作。

Data source

在VIEW裡,我們不會希望它擁有資料 (例如列表中的歌曲/影片,etc.),

這些歌曲/影片應該是儲存於MODEL,

而列表屬於VIEW的範疇。


流程是:

當VIEW發生變化,會發送訊息給CONTROLLER,

CONTROLLER會向MODEL要求所需的數據,再提供給VIEW。


note:Data source 是種特殊的 Delegate。

CONTROL  控制著Model/View的所有邏輯操作。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow

    Ernest 發表在 痞客邦 留言(0) 人氣()