AppDelegate解耦

栏目: IOS · 发布时间: 7年前

内容简介:其实第2个缺点是可以避免的,我们可以调整plist文件中的类的顺序,来实现模块的调用顺序。我们拿FRDModuleManager的demo中的plist文件来验证一下。对应下面的调用日志对应下面的调用日志
  • 1、每个模块都要初始化并分配内存,当FRDModuleManager里注册了大量模块时,会创建大量对象并影响App启动速度。
  • 2、缺少模块初始化优先级,当有三个模块A,B,C时,正好C依赖于B,B依赖于A,如果在配置文件中配置A,B,C的顺序又是打乱时,初始化会出问题。

其实第2个缺点是可以避免的,我们可以调整plist文件中的类的顺序,来实现模块的调用顺序。我们拿FRDModuleManager的demo中的plist文件来验证一下。

顺序一:FRDGroupModule在上面

AppDelegate解耦

对应下面的调用日志

AppDelegate解耦

顺序二:FRDGroupModule在下面

AppDelegate解耦

对应下面的调用日志

AppDelegate解耦

方案二: JSDecoupledAppDelegate

JSDecoupledAppDelegate是由 JSBadgeView 的作者开发的一款轻量级的AppDelegate解耦工具。它将AppDelegate各个功能点独立出来,并通过代理的方式将控制权下发。实现原理,利用Objective-C的消息转发机制,转发AppDelegate的各个方法来实现AppDelegate的解耦的

AppDelegate解耦

使用:参考 github 文档

优点:

  • 1、JSDecoupledAppDelegate本身对于AppDelegate各个功能的拆分对我们理解AppDelegate有一定帮助——AppDelegate确实承载了太多的功能。
  • 2、由于各个子代理对象的执行顺序是确定的,因此基本可以解决FRDModuleManager中相互依赖的问题。

缺点:

JSDecoupledAppDelegate的缺点非常明显:使用它必须废弃原生的AppDelegate,因此我们不能通过 ((AppDelegate *)[UIApplication sharedApplication].delegate).window 来获取window,以及window的rootViewController。

方案三:AppDelegate分类(Category)

优点:

不需要添加任何三方库,我们就可以给 AppDelegate 添加很多方法,并且能轻松控制方法的执行顺序


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

跟小贤学运营

跟小贤学运营

陈维贤 / 机械工业出版社 / 2016-12-9 / 69.00

这是一部能帮助运营新人快速构建互联网运营方法论和快速掌握互联网运营实操的著作,是小贤在百度贴吧和小红书成长经历和运营经验的复盘。书中包含5大运营主题、40余种运营工具和渠道、50余种运营方法和技巧、100余个真实接地气的运营案例,能迅速帮助运营新人掌握全套实操技能和构建完整运营体系。 本书的视角和知识体系都比较立体化: 既有百度这样的互联网巨头运营规范和思路,又有小红书这样的明星创业公......一起来看看 《跟小贤学运营》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具