使用category 为 AppDelegate 的代码分层
来源:互联网 发布:上古卷轴5优化工具 编辑:程序博客网 时间:2024/06/05 15:05
http://blog.csdn.net/teamlet/article/details/50863761
Category是一种为现有的类添加新方法的方式。
利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,
无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的class添加方法。
AppDelegate 是iOS app启动的入口,经常需要添加各类的第三方应用,比如:定位服务、统计服务、消息推送服务、支付服务等。
各类服务的代码如果完全放在一个文件中,给阅读和修改带来极大的不便。
利用category的特点,可以将不同的服务分别保存在不同的category(类)文件中,让代码更加简洁,结构层次更加分明,阅读和修改容易。
上代码!
一、环境
二、原始文件
1、AppDelegate.h
2、AppDelegate.m
三、创建AppDelegate的category
1、选中 AppDelegate.h
2、同时按住 command + shift + s ,将AppDelegate.h 另存为
3、名称 AppDelegate+WeixinPayService.h
4、同样操作,修改AppDelegate.m
5、将名称改为 AppDelegate+WeixinPayService.m
6、打开 AppDelegate+WeixinPayService.h 文件,修改
7、打开 AppDelegate+WeixinPayService.m,修改
8、导入 weixinPayService到 AppDelegate.m中
9、修改 AppDelegate.m 的代码
10、在需要回调的其他方法中,以同样的方式回调WeixinPayService中自定义的方法。
上面代码中没有定义更多WeixinPayService的代码,需要自己根据需要自行添加。
以上这种方式,适合使用的服务比较少的应用,思路是利用Category从原有的类中抽取了代码另存,这样从AppDelegate中可以容易的跟踪代码。
如果添加的服务很多,那么尽管使用了command+shift+s,还是需要添加和修改比较多的代码。
多个服务之间,代码完全独立,没有任何的复用。多个服务使用上述方法,会使代码量增加的较多。
可以将上述代码进行重构,把多个服务的方法进行统一命名,然后做成服务组件进行自动调用。
组件中的服务就是应用需要的服务,每个服务只需要按照统一命名的方法进行开发并注册到组件中,那么服务对AppDelegate的回调自动完成。
基于服务的AppDelegate回调组件: http://blog.csdn.net/teamlet/article/details/50864893
- 使用category 为 AppDelegate 的代码分层
- 使用category 为 AppDelegate 的代码分层
- 为AppDelegate分层的面向服务架构的 SOAComponentAppDelegate (AppDelegate 回调分层)
- 为AppDelegate分层的面向服务架构的 SOAComponentAppDelegate
- AppDelegate的使用
- 使用 SDWebImage 应该在 AppDelegate 写的代码
- 关于代码的分层
- OC基础——使用category(策略)实现分类,在不改变原类代码的前提下为原类增加方法
- 代码分层失败的案例
- 代码设计分层的感想
- AppDelegate.h中各个方法的使用
- AppDelegate文件的介绍和使用
- iOS之UIApplecation和appdelegate的使用
- ios category类别的使用
- Category(分类)的使用
- ios category类别的使用
- IOS分类(Category)的使用
- iOS Category的简单使用
- sql由一个表筛选结果建另一个表
- 多媒体编解码
- Linq to xml 查找所有的子节点
- android Activity启动模式--复习
- Java线程初步了解2-售票系统
- 使用category 为 AppDelegate 的代码分层
- 冒泡排序
- 润乾报表通过JS自带函数来实现自动计算中的四舍五入
- Ulua热更新提高 <三> 网络通信和ProtocolBuffer
- Android四大组件Service启动源码分析
- 面向社交网络用户的多维关联信息挖掘技术
- 2.1 QProcess调用外部程序获得实时输出
- Bearer
- 搭建自己的博客系统