无线客户端框架设计(3):基类的设计(iOS篇)
本文代码:YoungHeart-Chapter-03.zip
没有基类的App都不是好App。
因为iOS使用的是mvc模式的开发模式,所以,业务逻辑基本都在每个页面相应的ViewController中。这些页面有很多相同的逻辑,所以,我们有必要设计一个BaseViewController基类,将这部分共有逻辑抽象到基类中。
具体是哪些相同的逻辑呢?
1)重新规划页面的生命周期——第4篇文章会专门介绍.
2)iOS处理内存警告——在讲到内存优化的时候,会介绍。
3)作为跳转器的目标页,接收传递来的参数——在讲到导航器的时候,会介绍。
4)页面初始化时,需要清除控件上的假数据——在讲到UI框架设计的时候,会介绍。
5)进度条的加载和隐藏——在讲到进度条的时候,会介绍。
6)显示提示信息——在讲到进度条的时候,会介绍。
7)网络请求的失败情况的统一处理——在讲到网络请求的时候,会介绍
8)IPhone适配——在讲到适配器的时候,会介绍。
纵观以上8点,我们发现,有些是框架级别的,比如1、2、3,而4-8,则和具体的App相关。换做其它App时,4-8的实现可能是不一样的。所以我们有必要在MyLib项目中建立一个顶级的BaseViewController基类,包括1、2、3的实现。而在MyApp项目中,建立AppBaseViewController基类,让它继承自BaseViewController,并实现4-8的逻辑。在MyApp项目中的所有ViewController,都继承自AppBaseViewController。
以上8点,会在接下来相应的章节进行介绍,我们会在具体的章节添加相应的基类方法。而在本文,我们的基类,暂时是空的。
无线客户端框架设计(3):基类的设计(iOS篇)的更多相关文章
- BIM工程信息管理系统-EF实体框架数据操作基类
EF实体框架数据操作基类主要是规范增.改.查.分页.Lambda表达式条件处理,以及异步操作等特性,这样能够尽可能的符合基类这个特殊类的定义,实现功能接口的最大化重用和统一. 1.程序代码 /// & ...
- 无线客户端框架设计(5.1):将JSON映射为实体对象(iOS篇)
iOS开发人员已经习惯于将JSON转换为字典或者数组来进行操作了,接下来我要做的事情,可能匪夷所思,但是,对WP和Android开发人员而言,他们更倾向于将JSON转换为实体对象进行操作. 我所设计的 ...
- 无线客户端框架设计(4):自定义生命周期的设计(iOS篇)
首先要确定一点,我们的App,要基于XIB文件进行编程,而不是在每个相应的ViewController里面去手动创建页面的每个控件.这样做的好处是,将页面布局与业务逻辑彻底隔离.于是我们可以把xib的 ...
- Python+Selenium框架设计之框架内封装基类和实现POM
原文地址https://blog.csdn.net/u011541946/article/details/70269965 作者:Anthony_tester 来源:CSDN 博客地址https ...
- 无线客户端框架设计(2):项目结构的设计(iOS篇)
本文附带源码:YoungHeart-Chapter-02.zip 在设计任何一个框架之前,都应规划好项目结构. 假定Git作为我们的项目管理工具.我们要建立两个仓库,一个用于存放我们的框架,另一个用于 ...
- EF实体框架数据操作基类(转)
//----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司 ...
- Winform框架中窗体基类的用户身份信息的缓存和提取
在Winform开发中,有时候为了方便,需要把窗体的一些常规性的数据和操作函数进行封装,通过自定义基类窗体的方式,可以实现这些封装管理,让我们的框架统一化.简单化的处理一些常规性的操作,如这里介绍的用 ...
- 无线客户端框架设计(5):调用MobileAPI的设计(iOS篇)
这一节讲如何发起网络请求. iOS用于调用MobileAPI的第三方组件很多,我们这里采用的是以下组件: 1)ASIHTTPRequest,用于请求MobileAPI:http://allseeing ...
- iOS控制器之基类设计
题记 在进入新公司后.经过这一个月的重构项目,终于把项目做到了个人相对满意的程度(还有一种不满意的叫老板的需求,提过多次意见也没用= =!).在这次重构中按照以前的思路设计出了个人觉得比较适用的一个基 ...
随机推荐
- SQL语句调优 - 统计信息的含义与作用及维护计算
统计信息的含义与作用 ...
- 测试table数据 winfrom datagridview 点击标头数字排序的时候table 列类型要为数字类型
public DataTable GenerateData(int NoOfRecord){DataTable tbl = new DataTable();tbl.Columns.Add(new Da ...
- SQL获取所有数据库名、表名、储存过程以及参数列表
SQL获取所有数据库名.表名.储存过程以及参数列表 1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogi ...
- PHP通过反射方法调用执行类中的私有方法
PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 下面我们演示一下如何通过反射,来调用执行一个类中的私有方法: <?php //MyClass这个类中包 ...
- GATK-BWA-MEM handle GRCh38 alternate contig mappings
1. For the Impatient # Download bwakit (or from <http://sourceforge.net/projects/bio-bwa/files/bw ...
- RHEL查看CPU等机器信息
查看CPU信息: [root@pqsfc072 ~]# cat /proc/cpuinfo 查看CPU型号: [root@pqsfc072 ~]# cat /proc/cpuinfo | grep n ...
- App lifecycle(UWP深入学习一)
https://msdn.microsoft.com/en-us/library/windows/desktop/br211474.aspx Launching, resuming, and back ...
- 编程语言java-并发(锁)
文章转载自http://www.importnew.com/22078.html 悲观锁和乐观锁 我们都知道,CPU是时分复用的,就是CPU把时间片,分配给不同的thread/process轮流执行, ...
- MVC_Ajax请求
MVC_Ajax请求MVC中的AJAX操作原理还是基于Jquery的封装操作.但是吧没有那么恐怖.Ajax.BeginForm:使用Ajax.BeginForm方法会生成一个form表单,最后以Aja ...
- asp.net写验证码
生成验证码与匹配验证码的服务端代码 <%@ WebHandler Language="C#" Class="ValidataeCodeHandler" % ...