一、概念
Model :是对应用的抽象。拿建一艘航母来说,那张图纸就是Model,对航线母的长、宽、高、可以承载多少架战斗机、鱼雷、有多少跑台等等。
Controller :应用如何将Model显示给用户(UI逻辑),是中心是桥梁,连通Model和View。 好比按下航母的发射鱼雷按钮是如何去发射鱼雷的,这都是Controller的事情。
View : 你所看到的用实物展现在你面前的Model,就拿航母来说是根根据图纸由钢铁构建而成,到应用程序上由按钮,表格,标签等组成。view一切听从Controller的指挥,并及时将重要事件报告给Controller。
二、通信
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,delegate是一组协议,表示程序将要或者已经处于某种状态时,来调整View,以对用户有个交代。例如系统内存不足了,你是不是相应的降低view的质量以节省内存。
注:突然冒出个delegate,让人不好理解,其实他不对应xcode为我们创建的XXAppDelegate文件,此文件不属于MVC中的任何一部分,虽然与MVC有联系。