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

本文探讨了为什么需要将View Controller瘦身,重点介绍了三个关键步骤:1) 将DataSource和其他协议分离;2) 把业务逻辑和网络请求移至Model层;3) 将View代码转移到视图层。通过这些方法,可以提高代码可读性、降低耦合、增加复用性和简化测试。此外,ViewController主要负责通信,可以利用KVO、fetched results Controller和代理模式来处理不同组件间的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章来自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时,可以使用代理模式处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值