我工作6年半,一直从事业务层面的开发,iOS底层相关的东西也只是通过视频去做了解,随着年龄的变化,会发现以后的路会越来越窄,学习这个东西什么时候开始学都不晚,说不定什么时候会给你带来意想不到的事情,别管别的事情了,最起码从现在开始,慢慢丢弃身边的杂事,不要在乎眼前的那点利益,也不要刻意追求什么,踏下心做好一件事,花更多的时间在接触知识上,这是今天我对自己说的话。也是以过来人给大家的一个忠告。接下来探索一下一些优秀的开源框架,希望有一天我们,总有一天我们可以搭建出更好的框架。
AFNetWorking这个网络框架我们都非常熟悉,无论是日常的使用还是面试,其实我们只是觉得他是做网络请求的,刚接触的时候只知道用post get方法,接触http协议后有可能会用到put delete等方法,对于它内部的实现原理我们并没有做深究,今天往后的一段时间里我们将深究其中,揭开他神奇的面纱,不要给别人说我会用了。本系列以AFNetWorking 3.0作为源码解读。
我们先看看整个框架的一个逻辑,我们先看一个监控网络环境变化的类AFNetworkReachabilityManager
#import <SystemConfiguration/SystemConfiguration.h>
通过导入了这个头文件,我们知道网络监控的实现是依赖 SystemConfiguration这个api的。说明这个api可以提供这样的功能。
这是一个枚举封装,还是遵循一个使用枚举的原则,当满足一个有限的并具有统一主题的集合的时候,我们就考虑枚举。网络上这4种类型基本能满足我们开发中的大部分功能。
四个属性均为只读属性,只给了用户访问权,注意BOOL属性一般要写成getter方法的。
提供了5种初始化方法,能够满足大部分的需求。
SCNetworkReachabilityRef 这个很重要,这个类的就是基于它开发的。
+ (instancetype)managerForDomain:(NSString *)domain; 监听制定domain网络状态
+ (instancetype)managerForAddress:(const void *)address;监听某个socket地址的网络状态,socket通信请看这里c 网络与套接字socket - 马在路上 - 博客园