050*:AppDelegate如何瘦身?

1:AppDelegate分类(Category)

 

 

2:钩子函数:交换方法(不建议使用)

3:通过单例给AppDelegate瘦身

4:FRDModuleManager

 

优点:

  • 简单,只需要几行代码就可以解决。

  • 被添加的每个模块都可以“享受”AppDelegate的各个生命周期。 

缺点:

  • 每个模块都要初始化并分配内存,当FRDModuleManager里注册了大量模块时,会创建大量对象并影响App启动速度。

  • 缺少模块初始化优先级,当有三个模块A,B,C时,正好C依赖于B,B依赖于A,如果在配置文件中配置A,B,C的顺序又是打乱时,初始化会出问题。

5:JSDecoupledAppDelegate 

 

优点:

  • JSDecoupledAppDelegate本身对于AppDelegate各个功能的拆分对我们理解AppDelegate有一定帮助——AppDelegate确实承载了太多的功能。

  • 由于各个子代理对象的执行顺序是确定的,因此基本可以解决FRDModuleManager中相互依赖的问题。

缺点:

JSDecoupledAppDelegate的缺点非常明显:使用它必须废弃原生的AppDelegate,因此我们不能通过

((AppDelegate *)[UIApplication sharedApplication].delegate).window

来获取window,以及window的rootViewController。作者的回答也是只能通过获取view.window等曲线救国的方式获取window。

posted on 2020-12-27 23:04  风zk  阅读(231)  评论(0编辑  收藏  举报

导航