一、 優點: 1、 耦合性低:視圖層和業務層分離,所以在更改視圖層代碼時而不用重新編譯模型和控制器代碼。同樣,更改業務流程或者業務規則改變時只需改動模型層即可。由于三個部件是相互獨立,改變其中一個不會影響其他兩個。 2、 重用性高 :比如很多界面可以重用一個模型。 3、 生命周期成本低。 4、 部署快。 5、 可維護性高。 6、 有利軟件工程化管理。 二、 缺點: 1、 沒有明確的定義: 2、 不適合小型、中等規模的應用程序。 3、 增加系統結構和實現的復雜性。 4、 視圖與控制器間的過于緊密的鏈接。 5、 視圖對模型數據的低效率訪問。 6、 一般高級的界面工具或構造器不支持模式。
1、 Model和View永遠不能互相通信,只能通過Controller傳遞。 2、 Controller可以直接與Model對話(讀寫調用Model),Model通過Notification和KVO機制與Controller間接通信。 3、 Controller可以直接與View對話。通過Outlet,直接操作View,Outlet直接對應到View中的控件,View通過action向Controller報告事件的發生(如用戶Touch我了)。Controller是View的直接數據源(數據很可能是Controller從Model中取得并經過加工了)。Controller是View的代理(delegate),以同步View與Controller。 
1、 在定義代理時,繼承基類的代理。如下圖 代理SPCTableViewDataSource繼承基類ZDBSimulateTableViewDatasource。 
2、 定義代理實現對象。如idspcDataSoruce;
3、 在.m文件中重寫set方法,給對象賦值并傳值。_spcDataSoruce為當前代理的對象。而self.dataSource為父類的對象。

新聞熱點
疑難解答