iOS_学习AFNetworking(01)--AFNetworkReachabilityManager(网络状态监听模块)

前言:AFNetworkReachabilityManager基于系统API  SystemConfiguration框架

SystemConfiguration框架允许应用程序访问设备的网络配置设置。 确定设备的可连接性,例如Wi-Fi或cell连接是否处于活动状态。接下来几篇我们就一起看一下这个框架。

1.NS_DESIGNATED_INITIALIZER     NS_UNAVAILABLE

NS_DESIGNATED_INITIALIZER 用于明确初始化方法, NS_UNAVAILABLE 的作用是,直接禁用其他初始化方法,简单粗暴。

2.FOUNDATION_EXPORT

FOUNDATION_EXPORT是对字符串的指针地址比较;          #define是调用isEqualToString 的方法;

3.初始化

+ (instancetype)sharedManager; 单例

+ (instancetype)managerForDomain:(NSString*)domain;                    用SCNetworkReachabilityRef 初始化   SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [domain UTF8String]);

+ (instancetype)managerForAddress:(constvoid*)address;  //socketaddress初始化     SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address);

+ (instancetype)manager;     总的来说也是用socketaddress初始化


- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability; 用reachability 初始化

3.追踪

- (void)startMonitoring;  每次开始追踪时都要停止追踪

主要代码

// 通过调用 SCNetworkReachabilityScheduleWithRunLoop 函数设置 Reachability 对象的 ref 在 Current Runloop 中对应的模式(kCFRunLoopDefaultMode)开始监听网络状态;

SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);

GCD进程锁  开启通知 AFNetworkingReachabilityDidChangeNotification

4.停止追踪

SCNetworkReachabilityUnscheduleFromRunLoop方法

主要代码

 SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);


以上代码仅限自己研究  如有错误欢迎指正,万分感谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容