再看AFNetworking框架

来源:互联网 发布:js新建一个json对象 编辑:程序博客网 时间:2024/06/06 00:04

做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
原创粉丝点击