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时,可以使用代理模式处理。

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

时间: 2025-01-15 06:08:23

0521.如何拆分View Controller进而实现轻量级的View Controller[UIKit]的相关文章

怎样拆分View Controller进而实现轻量级的View Controller[UIKit]

參考文章来自objcio站点 ? 为什么要编写轻量级的View Controller?? ? 1.作为iOS项目中最大的文件,ViewControllers中的代码复用率差点儿是最低的 2.重量级的View COntroller加大了測试的复杂度. ? 所以关注ViewController的瘦身.把业务逻辑.网络请求.Views的代码移到合适的地方.进而提高代码可读性.减少耦合.提高复用.减少測试难度极为重要 ? 一.把DataSource和其它Protocols分离出来 ? ? 比方uiTab

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

1.作为iOS项目中最大的文件,ViewControllers中的代码复用率几乎是最低的2.重量级的View COntroller加大了测试的复杂度.所以关注ViewController的瘦身,把业务逻辑.网络请求.Views的代码移到合适的地方,进而提高代码可读性.降低耦合.提高复用.降低测试难度极为重要一.把DataSource和其他Protocols分离出来比如uiTableView中的DataSource大多都是对数组做的一些操作,可以把数组操作相关的代码移到单独的类中.可以使用bloc

SpringMVC从Controller跳转到另一个Controller(转)

http://blog.csdn.net/jackpk/article/details/44117603 [PK亲测] 能正常跳转的写法如下: return "forward:aaaa/bbbb.do"; return "redirect:aaaa/bbbb.do"; return new ModelAndView("forward:bbbb.do", null); return new ModelAndView("redirect:b

Android View体系(二)实现View滑动的六种方法

相关文章: Android View体系(一)视图坐标系 1.View的滑动简介 View的滑动是Android实现自定义控件的基础,同时在开发中我们也难免会遇到View的滑动的处理.其实不管是那种滑动的方式基本思想都是类似的:当触摸事件传到View时,系统记下触摸点的坐标,手指移动时系统记下移动后的触摸的坐标并算出偏移量,并通过偏移量来修改View的坐标. 实现View滑动有很多种方法,这篇文章主要讲解六种滑动的方法,分别是:layout().offsetLeftAndRight()与offs

【android】让popupwindow显示在view的上方并与该view水平居中对齐

首先,废话少说,先上效果图: 代码: public class MainActivity extends Activity implements OnClickListener{ private Button showBtn1; private Button showBtn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV

[老欧的问题]如何通过有ID的view找到其下没有ID的view

[问题来源] activity中有很多view是没有固定ID的, 如果想要找到它,进行操作不知道该如何进行. [解决方案] 所以说,没文化真可怕. 刚开始采用solo.getviews找到有ID的父view下所有的view,再去定位很容易出问题. 当时只是知道好像有个getChild的方法,却不知道该怎么弄. 感谢林咩咩告诉我方法. 1 ViewGroup fatherView = (ViewGroup)solo.getView(packageName.R.id.name); 2 ViewGro

Android View框架总结(二)View焦点

请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52263256 前言:View框架写到第六篇,发现前面第二篇竟然没有,然后事情是在微信公众号发了,忘记在博客上更新,所以关注微信公众号的应该都看过了,趁今天有时间遂补上.(PS:本篇文章中源码均是android 6.0,请知晓) 本来之前说view下篇是写onMeasure,onLayou,onDraw相关的,笔者做盒子开发,遥控器按键,碰到的都是焦点控制相关.所以先

SpringMVC从Controller跳转到另一个Controller

1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料,一堆都不是我想要的结果.无奈啊,自己写一篇比较全都供以后大家一百度吧,哈哈哈...是这些写的不是很全都人们给了我写这篇博客的动力. 2. 解决办法 需求有了肯定是解决办法了,一一解决,说明下spring的跳

往一个控制器的View添加另一个控制器的View出现的异常

往一个控制的view上添加另一个控制器的View,(由于layout缘故)可能视图会发生异常,出现伸缩(被添加视图的view变小,或者变大),所以应该设置被添加控制器的View的属性,让他不随父控件的变化而变化, 被添加控制器.view.autoresizingMask = UIViewAutoresizingNone; 往一个控制器的View添加另一个控制器的View出现的异常,布布扣,bubuko.com