如何拆分View Controller进而实现轻量级的View Controller[UIKit]

参考文章来自objcio网站

 

为什么要编写轻量级的View Controller??

 

1、作为iOS项目中最大的文件,ViewControllers中的代码复用率几乎是最低的

2、重量级的View COntroller加大了测试的复杂度。

 

所以关注ViewController的瘦身,把业务逻辑、网络请求、Views的代码移到合适的地方,进而提高代码可读性、降低耦合、提高复用、降低测试难度极为重要

 

一、把DataSource和其他Protocols分离出来

 

 

比如uiTableView中的DataSource大多都是对数组做的一些操作,可以把数组操作相关的代码移到单独的类中。可以使用block或者delegate来设置一个cell。

 

二、把业务逻辑、网络请求逻辑移动到Model中

 

业务逻辑类的代码要放到Model对象中。但是对于不能轻易移动到Model对象中,但是和Model代码相关的,我们可以创建一个Store类

 

Store被称为服务层或者仓库,主要关心的是数据加载、缓存和设计数据栈

 

网络请求逻辑也要移动到Model层中,不要在ViewController中做网络请求的逻辑。你应该把网络请求封装到一个类中。这样你的ViewController就可以在之后通过回调函数来请求网络了。

 

三、把View代码移到View层

 

不要在ViewController中构建复杂的view层次结构。可以把views封装到UIView的子类中。对代码的重用和测试都带来很大的帮助。

 

补充

 

1、ViewController主要做的事情是与其他关联的ViewController、Model、View之间进行通信。

 

2、ViewController和Model对象之间的消息传递可以使用KVO、fetched results Controller

 

3、当一个ViewController需要把某个状态传递给其他多个ViewController时,可以使用代理模式处理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章