怎样拆分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时。能够使用代理模式处理。

原文地址:https://www.cnblogs.com/ldxsuanfa/p/10802863.html

时间: 2024-11-09 06:06:47

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

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

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

为什么要编写轻量级的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