关于iOS架构这几年文章也太多了,在这里只是为了记录并分享一下自己做iOS开发的的一些知识和见解。可能有很多不足的地方,有幸能看到的iOSer见笑了。
首先说一下什么是MVC,MVC是Model(模型)-View(视图)-Controller(控制器)的简称,将数据,视图显示,和业务逻辑分开来,这样再对界面布局进行改进的时候,不需要对业务逻辑进行修改。
MVC一张很经典的MVC间的关系图。
model和controller之间通过通知或者KVO观察者模式进行通信。
controller和view之间能直接进行同性,controller是view的代理,数据源,能对view进行操作改变,view通过action告诉controller触发了什么事件。
model和view之间永远不能相互通信。
但是实际开发中,很多人认为的MVC却不是这样的,刚进入工作的时候,包括我,认为MVC就只是在文件目录结构上分出Model,View,Controller就是MVC架构了。但是实际上View层做的工作全部都在Controller中,而实际上的View层目录中只是放了一些自定义控件。
这根本就算不上是MVC!基本上可以说是只有一个很轻量的承载接受数据的model,然后跟一个负责处理了其他所有事情的及其臃肿的controller。这样的代码拉下来,在稍微复杂的页面,基本controller中的代码量都是好几千行。在加上没有注释,那可能真是太痛苦了。
所以我觉得我认为的MVC,是应该把View真正的拆分出来。
modelmodel依然是起到一个数据承载的作用。
viewview 中只负责数据的展示,不会跟model牵扯到一丝一毫的关系,所有需要更新的UI都通过view暴露出来给controller的接口去刷新。这样就真正的做到了把view独立出来,所有的布局相关的都在view中。
controllercontroller就负责业务逻辑的处理,和通过view暴露出来的接口,提供其需要展示的内容,而不是整个model都甩给view。
这大概就是我的理解。
网友评论