天天看点

0521.如何拆分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时,可以使用代理模式处理。