分类 毒解

作者: CoderHG | 来源:发表于2018-03-28 13:12 被阅读140次

    一、关于标题

    本来是要写成 独解 的,后来我还是服从了输入法的旨意。

    接下来主要介绍一下分类在 网络请求AppDelegate瘦身 中的用途。

    二、网络请求

    网络请求,使用分类?怎么使用?
    在一个项目中的网络请求一般套路都是一样的,包括域名,加密,传参方式等等。那么如何在套路一样,又要在不同的模块中共用呢?主要有这两个方法:

    • 继承
    • 分类
      看主题就应该知道,我的重点是 分类。到现在我依然还没有发现 继承 能胜过 分类 的理由。

    这部分可以参考这个代码: NetWorkEngine

    简单的介绍一下这个 NetWorkEngine

    NetWorkEngine

    首先,有一个基本的网络请求工具,就是 NetWorkEngine 这个 Class 。这个 Class 中就提供了一个很好的网络请求封装。那在项目开发中, 应该如何去使用呢?
    NetWorkEngine 这个 Class 一般是不用去动的,如何想要在项目中使用,那么先弄一个 分类 ,比如登录模块,那么就弄一个 NetWorkEngine+Login 分类,将所有与登录有关的接口都放到这里。

    总之,使用起来是很简单的。大神可以通过我的代码查看。NetWorkEngine

    看了之后会不会觉得这样使用 分类 显得很高大上呢?

    三、AppDelegate瘦身

    就是 AppDelegate 文件的瘦身,避免此文件的臃肿导致难以维护。早上看了一个大神的文章 《AppDelegate瘦身指南》写得很好,受益匪浅。我比较喜欢的两个方法就是使用 FRDModuleManager 与 分类,其实之前我也想到了使用 分类 给AppDelegate瘦身,但是一直木有试过。我比较喜欢 FRDModuleManager 的原因是,所有的子模块都准守了 FRDModule 协议, 这个协议由准守了 这两个协议 UIApplicationDelegate, UNUserNotificationCenterDelegate, 所以在子模块中,感觉就像是在 AppDelegate 中实现一样,挺爽的。但是看到作者列举的缺点之后,心里很不是一个滋味。
    于是就想着把 FRDModuleManager 与 分类的优点总结一下,可以这样实现:直接给 AppDelegate 通过模块弄出分类。像这样的:

    AppDelegate

    单独给 AppDelegate 弄一个文件夹,是我多年的习惯,这次终于能用上场了。[默许一分钟,仅仅一分钟]。

    看到上面的图片,感觉怎么样?我就举了两个例子而已:启动调度(Scheduler)与 推送(Push)。按照上面介绍的,可以了么?感觉没有体现出 FRDModuleManager 的有点啊, 是的,别急。 FRDModuleManager 的优点就是使用起来感觉就像是在 AppDelegate 中一样。这样很好了, 直接把 AppDelegate 中的方法 Copy 过来就可以了。如果你这样做了, 别说不认识我啊!!!!在分类中不要重写 当前类的方法, 这是大忌啊。那么我们应该怎么处理呢?很简单,就三个字 加前缀。是不是有一种预想不到的感觉。分类加前缀,多么有没的结合!具体是这样的:

    AppDelegate+Scheduler

    然后在 AppDelegate 中这样调用:

    调用启动器中的逻辑

    这样就轻松的将本来在 AppDelegate 中处理的逻辑转移到 AppDelegate+Scheduler 中,已达到了给 AppDelegate 瘦身的目的。

    四、说在后面的话

    其实分类是一个很好的技术方案,使用好了,真的是一把利器。但是不要滥用!

    参考文章:

    AppDelegate瘦身指南
    NewStart

    相关文章

      网友评论

      • 冲虾米:这样更改?FRDModuleManager 本身的作用在哪?个人理解FRDModuleManager其实类似于消息转发,只能不走系统内置消息转发,而是简单的采用钩子的处理方式吧。可能表达不够吧,我暂时没看懂。
      • kyson老师:加油!

      本文标题:分类 毒解

      本文链接:https://www.haomeiwen.com/subject/nrpycftx.html