iOS AppDelegate入口解耦

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

说到解耦,可能大部分人会潜意识的认为业务组件间的解耦是最根本的,也是最重要的。这个说法个人认为没什么问题,今天所说的就是业务组件间解耦的一部分----AppDelegate入口解耦。

首先想一下我们在做组件化的过程:主工程一般成员是没法看到的,更别说去操作了,只有老大才能根据团队成员的需要去做一些配置、管理什么的。团队成员做业务组件的时候是在一个新的工程进行的,在example里面进行测试,最终cocoapods化,或者二进制化。

这个时候就会出现一个问题,如果你的业务组件需要在主工程的AppDelegate里面处理一些事情,比如说环境配置、推送、初始化第三方等,那应该怎么处理?一般情况我们在开发的时候会在业务工程里面的AppDelegate里直接进行操作,最后集成到主工程的时候告知老大在主工程的AppDelegate里面进行相应配置。

这样做的问题在哪呢?

  1. 业务组件的解耦不彻底,需要依赖主工程的AppDelegate。
  2. 工程师不能方便的管理自己的业务工程的AppDelegate。
  3. 增加了工程师的时间开销,效率降低。
  4. AppDelegate不便维护。

如何去解决这个问题呢?

  • 核心问题1:让每个组件都可以拥有类似UIApplicationDelegate代理方法这样的在AppDelegate执行的方法 。
  • 核心问题2:在主工程的AppDelegate对应的UIApplicationDelegate代理方法里面实现所有业务组件需要在该代理方法实现的内容。

实现思路:

核心问题1 的解决:使用协议,协议里面声明的就是类似UIApplicationDelegate代理方法。业务组件里面添加一个遵循这个协议的对象,实现你想在AppDelegate里面实现的对应方法。
核心问题2 的解决:使用单例类,添加全局变量NSMutableArray用于存放各业务组件里面的问题1中的对象,在主工程AppDelegate的代理方法里面遍历数组调用各业务组件里面问题1对象的协议方法,当然,这个遍历数组、调用方法的实现应该放在单例类里面实现。

实现思路是这样的,具体实现给大家提供一个示例:

iOS AppDelegate入口解耦

DMUserCenterModule:用户中心模块上面提到的对象。
DMApplicationDelegate:上面提到的协议。
DMAppDelegateManager:单例类。

DMUserCenterModule维护在各个业务组件里面;
DMApplicationDelegate、DMAppDelegateManager 一般维护在与业务不太相关的弱组件库里面。

具体实现就不做过多说明。

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS AppDelegate入口解耦》 发布于2019-10-16

分享到:
赞(0)

评论 抢沙发

3 + 5 =


iOS AppDelegate入口解耦

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录