问题:AppDelegate里面各种各样的sdk的集成
1.初始化控制器2.初始化分享3.初始化推送等
这么多的东西集中在AppDelegate里面使得AppDelegate臃肿并且不好复用
举例说明:你新开一个项目用到AppDelegate里面的分享和推送,用不到旧项目的初始化控制器,如果你不拆分你就需要在老版本里面各种复制粘贴说不定还会遗漏某些东西费时费力。
目标:将AppDelegate里面的各个服务全部拆分成一个个的小的模块能够复用,为AppDelegate瘦身
思路:1.首先把每一个模块拆分到遵循AppDelegateProtocol的类里面
2.将每一个模块放到数组里面分别去执行方法
3.通过分类替代AppDelegate的方法然后做操作
通过这三点将AppDelegate拆分
想到这个思路的历程:1.首先想到要用分类替换AppDelegate做分发
2.分发的话为了能够统一需要让分发的对象遵循相同的协议
3.然后就需要循环分发对象执行协议的方法,那么怎么把分发对象放到数组中
4.通过一个runtime方法拿到所有的自己写的类,然后判断是否否遵循AppDelegateProtocol协议(估计会有上千次的循环不知道会不会影响性能)
5.将遵循AppDelegateProtocol协议的对象放到数组中
6.然后进行分发执行方法
好处:1.不造成任何的侵入性,拆分不成功直接拖出来,不影响原来的AppDelegate
2.拆分成功以后可以复用。
缺点:获取所有的遵循这个协议的类的方法的时候可能会比较消耗性能(我不确定)
地址:https://github.com/HelloWorldStap/AppDelegate.git
网友评论