一、关于标题
本来是要写成 独解 的,后来我还是服从了输入法的旨意。
接下来主要介绍一下分类在 网络请求 与 AppDelegate瘦身 中的用途。
二、网络请求
网络请求,使用分类?怎么使用?
在一个项目中的网络请求一般套路都是一样的,包括域名,加密,传参方式等等。那么如何在套路一样,又要在不同的模块中共用呢?主要有这两个方法:
- 继承
- 分类
看主题就应该知道,我的重点是 分类。到现在我依然还没有发现 继承 能胜过 分类 的理由。
这部分可以参考这个代码: NetWorkEngine
简单的介绍一下这个 NetWorkEngine
首先,有一个基本的网络请求工具,就是 NetWorkEngine 这个 Class 。这个 Class 中就提供了一个很好的网络请求封装。那在项目开发中, 应该如何去使用呢?
NetWorkEngine 这个 Class 一般是不用去动的,如何想要在项目中使用,那么先弄一个 分类 ,比如登录模块,那么就弄一个 NetWorkEngine+Login 分类,将所有与登录有关的接口都放到这里。
总之,使用起来是很简单的。大神可以通过我的代码查看。NetWorkEngine
看了之后会不会觉得这样使用 分类 显得很高大上呢?
三、AppDelegate瘦身
就是 AppDelegate 文件的瘦身,避免此文件的臃肿导致难以维护。早上看了一个大神的文章 《AppDelegate瘦身指南》写得很好,受益匪浅。我比较喜欢的两个方法就是使用 FRDModuleManager 与 分类,其实之前我也想到了使用 分类 给AppDelegate瘦身,但是一直木有试过。我比较喜欢 FRDModuleManager 的原因是,所有的子模块都准守了 FRDModule 协议, 这个协议由准守了 这两个协议 UIApplicationDelegate, UNUserNotificationCenterDelegate, 所以在子模块中,感觉就像是在 AppDelegate 中实现一样,挺爽的。但是看到作者列举的缺点之后,心里很不是一个滋味。
于是就想着把 FRDModuleManager 与 分类的优点总结一下,可以这样实现:直接给 AppDelegate 通过模块弄出分类。像这样的:
单独给 AppDelegate 弄一个文件夹,是我多年的习惯,这次终于能用上场了。[默许一分钟,仅仅一分钟]。
看到上面的图片,感觉怎么样?我就举了两个例子而已:启动调度(Scheduler)与 推送(Push)。按照上面介绍的,可以了么?感觉没有体现出 FRDModuleManager 的有点啊, 是的,别急。 FRDModuleManager 的优点就是使用起来感觉就像是在 AppDelegate 中一样。这样很好了, 直接把 AppDelegate 中的方法 Copy 过来就可以了。如果你这样做了, 别说不认识我啊!!!!在分类中不要重写 当前类的方法, 这是大忌啊。那么我们应该怎么处理呢?很简单,就三个字 加前缀。是不是有一种预想不到的感觉。分类加前缀,多么有没的结合!具体是这样的:
然后在 AppDelegate 中这样调用:
这样就轻松的将本来在 AppDelegate 中处理的逻辑转移到 AppDelegate+Scheduler 中,已达到了给 AppDelegate 瘦身的目的。
四、说在后面的话
其实分类是一个很好的技术方案,使用好了,真的是一把利器。但是不要滥用!
网友评论