再看AFNetworking框架

做iOS开发的对AFNetworking这个三方库肯定不会陌生,这是一个网络请求的三方库,很多App中都使用了该库,当然也有公司内会自己封装一套网络请求的类。我在项目中使用的都是AFNetworking这个三方库来请求网络数据的。

在AF2.x的时候AF是基于NSURLConnection和新的NSURLSession进行封装的,在NSURLConnection被苹果弃用之后,AF就开始专门基于NSURLSession进行封装了。在AF2.x的时候我们常用的请求管理类是AFHTTPRequestOperationManager,而在AF3.x中我们使用的请求管理类是AFHTTPSessionManager。

利用AFNetworking监听全局网络状态:

在AFNetworking有一个类AFNetworkReachabilityManager,它是用来监听网络状态的,包括手机网络、WI-FI网络、无网络。我们可以对AFNetworking进行封装,然后利用我们自己的封装类对网络进行监听。这里假设我们封装类名为HttpTool。我们将HttpTool写成一个单例,并且给它一个属性network,network是BOOL类型,我们可以根据network的值来判断当前的网络状态。看代码:

+ (HttpTool *)sharedHttpToolObject{

    staticdispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        httpTool = [[superallocWithZone:NULL]init];

        [httpToolnetworkIsOrNot];

    });

    returnhttpTool;;

}


- (void)networkIsOrNot{

    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManagersharedManager];

    [manager startMonitoring];

    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

        

        if (status ==AFNetworkReachabilityStatusNotReachable) {

            NSLog(@"没有网络");

            _network =NO;

        }else{

            NSLog(@"有网络");

            _network =YES;

        }

    }];

     

  }

在将HttpTool创建为单例的时候就调用了networkIsOrNot方法,在networkIsOrNot方法中根据是否有网络分别给_network这个属性进行赋值。在AppDelegate中的didFinishLaunchingWithOptions:方法中调用HttpTool的shareHttpTollObject方法。这样我们就能在任何地方通过HttpToll的network这个属性来判断当前的网络状态了。

 

 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值