是時候祭出這張圖了啦~!看過《斯坦福大學(xué)公開課:iOS 7應(yīng)用開發(fā)》的寶寶們應(yīng)該對此圖不陌生哦。順便說一句,真的非常喜歡Paul Hegarty教授??!

MVC是什么?
是一種設(shè)計模式,M-model,V-view,C-controller.
- 數(shù)據(jù)模型:負責(zé)存儲,定義,操作數(shù)據(jù)
- 視圖:用來展示數(shù)據(jù)給用戶,和用戶進行操作交互
- 控制器是M與V的協(xié)調(diào)者,控制器獲取數(shù)據(jù),將數(shù)據(jù)交給視圖展示在界面上
Controller和View之間可以通信,從圖中也可以看出是代理模式,典型的,大家想下UITableView的代理和Controller之間的通信。當(dāng)數(shù)據(jù)更新的時候,Controller和Modle之間進行通信,方式是Notification和KVO,這個方式就像一個廣播一樣,Model發(fā)信號,Controller設(shè)置監(jiān)聽接受信號,當(dāng)有數(shù)據(jù)更新時就發(fā)信號給Controller,Model和View不能直接進行通信,這樣會違背MVC設(shè)計模式。
你還熟悉什么設(shè)計模式?
代理模式:
代理模式是一種回調(diào)機制,由三部分組成:代理對象,委托者,協(xié)議。委托者需要定義協(xié)議方法,代理對象實現(xiàn)協(xié)議方法,并且需要建立代理關(guān)系才可以通信,比如這句代碼tabelView.delegate = self; 代理是一對一的關(guān)系。那么時候用代理呢? 一般用于View和Controller之間的通信,且實現(xiàn)多個接口的時候,用代理是非常Nice的!
單例模式:
說白了就是一個類不通過alloc方式創(chuàng)建對象,而是用一個靜態(tài)方法返回這個類的對象。系統(tǒng)只需要擁有一個的全局對象,這樣有利于我們協(xié)調(diào)系統(tǒng)整體的行為,比如想獲得[UIApplication sharedApplication];任何地方調(diào)用都可以得到 UIApplication的對象,這個對象是全局唯一的。
實現(xiàn)單例分兩種情況:ARC+GCD 和MRC
給單例類添加了一個color屬性 寫法如下:
ARC+GCD


MRC現(xiàn)在幾乎不用,代碼就暫時不貼了。
觀察者模式:
KVO鍵值觀察。鍵值觀察機制是一種能使得對象獲取到其他對象屬性變化的通知 ,極大的簡化了代碼。實現(xiàn) KVO 鍵值觀察模式,被觀察的對象必須使用 KVC 鍵值編碼來修 改它的實例變量,這樣才能被觀察者觀察到。KVC是KVO的基礎(chǔ)。