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 添加很多方法,并且能轻松控制方法的执行顺序


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

查看所有标签

猜你喜欢:

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

暗网

暗网

杰米·巴特利特 / 刘丹丹 / 北京时代华文书局 / 2018-7 / 59.00

全面深入揭秘“黑暗版淘宝”暗网的幕后世界和操纵者 现实中所有的罪恶,在暗网中,都是明码标价的商品。 暗杀、色情、恋童癖、比特币犯罪、毒品交易…… TED演讲、谷歌特邀专家、英国智库网络专家杰米•巴特利特代表作! 1、 被大家戏称为“黑暗版淘宝”的暗网究竟是什么?微信猎奇 文不能告诉你的真相都在这里了! 2、 因章莹颖一案、Facebook信息泄露危机而被国人所知的暗网......一起来看看 《暗网》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

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

RGB CMYK 互转工具