在实际开发时,对于网络的处理是必不可少的!然后为了减少对第三方类库的引用,我们一般会在将方法向上抽象一层出来。
接下来 我们将对AFN进行抽象封装
一、对网络状态的实时监控
typedef void(^actionBlokc)();
+ (void)checkNewWorking:(NSString *)url WithSucessBlock:(actionBlokc)success andWithFaildBlokc:(actionBlokc)faild
{
NSURL *baseURL = [NSURL URLWithString:url];;//创建一个URL
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];//创建一个Http请求操作管理者
NSOperationQueue *operationQueue = manager.operationQueue;//将操作管理者加入到队列当中
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {//利用block代码实现对网络的检测
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[operationQueue setSuspended:NO];//设置队列暂停为NO
NSLog(@"网络状态正常");
success();
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[operationQueue setSuspended:YES];//设置队列暂停为YES
NSLog(@"网络状态异常");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
faild();
});
break;
}
}];
[manager.reachabilityManager startMonitoring];//开启网络监控
}