GCD和网络加载的一点整理(二)

iOS开发中经常会碰到发起一个网络请求,还要在开始的时候写加载菊花转圈的代码,在网络请求示完成之后还要隐藏掉菊花转圈,甚至有时候网络请求失败或者服务器返回失败信息还要进行显示,针对这些都是繁杂的活,最近就想着把这两者封装结合起来,采用配置参数的形式来控制

1.配置转圏有信息提示类,对第三方库MBProgressHUD进行封装,新建LNMBProgressHUD继承于MBProgressHUD,方便以后扩展,再建MBManager类进行对转圈和信息提示进行管理,负责显示和查找显示在哪个视图上,全部用类方法来实现


查找要显示在哪个视图上,通过对window的rootViewController来层级查找,采用递归的方法来找到当前处在最顶层的控制器,从而把视图加载到这个控制器上,当然,如果当前控制器的视图未显示,也不会加载


2.配置网络请求类LNHttpManager 继承于AFHTTPSessionManager,单例形式存在,提供GET, POST方法,自定义相关回调,其中网络加载的枚举如下 



在网络请求发起和结束之后作相应的处理即可


这里用了一个字典signDic来保存一个网络请求的配置枚举,以task.taskIdentifier作key来标识具体哪 个请求,请求完成之后根据配置作相应的处理

这样在发起网络请求时,就无需要写多余的代码,只需要调起网络请求类,传递一个参数即可,针对日常使用频率较高的,还封装了几个更简洁的方法


调起网络例子,发起网络会转圈,请求完成之后会自动消失,而在调起端无需要再关心转圏的加载与隐藏


其中显示提示信息的类和网络请求类没有直接的从属关系,两个类可单独拿出来使用,达到一定程度的解藕,写了一个初步的,以后可慢慢完善Demo链接,Demo中还包含了对GCD,RunLoop ,NSOperationQueue,RAC的一些见解和实例。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,778评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,833评论 25 709
  • 早就有写点东西的想法,又找了好多借口流产了。今天终于鼓起勇气开始动笔。没有文笔,连最起码的顺序都是混乱的。但是,哪...
    沙市日化阅读 1,220评论 0 0
  • 1 前几天,我在朋友圈吐槽了一个人带孩子的辛酸,结果引来几位亲戚的不屑,她们近乎...
    小城卜一阅读 3,505评论 0 1
  • 寒假恍如一股寒流,听说要来时,穷尽一切御寒安排与计划,真来了,也不过像一阵风,没啥感觉就过去了。假期结束,开工了,...
    杨爱民阅读 4,457评论 0 2

友情链接更多精彩内容