读AFNetworking源码第三次的收获与思考

改造为工具类,其余地方没变:php

[RequestTools getRequest:@"http://ip.taobao.com/service/getIpInfo.php?ip=myip" success:^(NSDictionary * _Nonnull dic) {
        NSLog(@"请求的数据dic:%@",dic);
    } error:^(NSError * _Nullable error) {
        NSLog(@"请求的数据失败error:%@",error);
    }];
	
	+ (void)getRequest:(NSString *)requestUrlString success:(RequestSuccessBlock)successBlock error:(RequestFailureBlock)errorBlock;

目前来看,直接用工具方法有个很差的地方就是 单例能够有本身的属性,类方法不行,类方法在实现某些功能的时候受限,由于没有成员变量或者是数据啊。可是类方法只知道一个类名就能够调用。其余并暂时并无感受到很差,根据需求和细节再定吧,单如今这个功能,用哪一个都行,遇到不一样 再来补充。 参考使用:https://www.jianshu.com/p/50e47311f0d0 。 类方法与单例。这里就先用类方法,就把单例相关方法给注释掉了。json

而后对比一下本身写的和AF最初的写法,感受本身写的好 - - ,第一个缘由呢,是个人能够打印 请求结果的json数据,而AF这个版本的 不知道是哪里有问题仍是太旧了,请求成功了,可是只拿到了请求头的数据,没有拿到json的数据。接下来得好好分析一下了:服务器

//打断点一步步调试就能找到问题。
AFHTTPOperation *operation = [AFHTTPOperation operationWithRequest:request callback:callback];
    [operation start];
	
	//打印出data须要修改 QHTTPOperation里的状态 进行json格式化
	 if (self.statusCodeAcceptable) {		
        [[NSNotificationCenter defaultCenter] postNotificationName:AFHTTPOperationDidSucceedNotification object:self];
        
        if(self.callback.successBlock) {
            data = [NSJSONSerialization JSONObjectWithData:self.responseBody options:kNilOptions error:nil];

            self.callback.successBlock(self.lastRequest, self.lastResponse, data);
        }
    }

问题 解决 成功打印出来。网络

为何要整个操做任务呢?并且这个任务继承自苹果的一个文件:QHTTPOperation QHTTPOperation: 在AFHTTPOperation和AFImageRequestOperation 下面是QHTTPOperation,一个管理NSURLConnection委托方法的NSOperation子类。它是至关健壮的、高性能的、完整的,因此咱们没有本身动手,而是在此基础上构建了一个网络。若有须要,咱们可自行生产。工具

NSURLConnection - 从iOS2.0开始有,已经有十多年的年龄了 . 在平时开发中,咱们几乎不会用到NSURLConnection,由于咱们用的都是别人给你封装好的,可是咱们也要去了解挖掘它,才能更好的使用三方库。 **NSURLConnection:负责发送请求,创建客户端和服务器的链接。发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 ** 看来AFNetworking这个网络库网络方面的知识远比SDWebImage要复杂 涉及的多。post

NSURLConnection 是 iOS2.0后推出的,NSURLSession 是iOS7.0后推出的,用于代替 NSURLConnection. 二者不一样知识普及具体参考资料:https://www.jianshu.com/p/877dec0530d5 目前看来本身封装的原生的是 7.0之后的新方法,而AF第一个版本用的是以前的NSURLConnection.性能

感受脑壳不够用了,继续看吧,能多了解点就多了解点,毕竟本身也是这个游戏里的一个角色。调试

相关文章
相关标签/搜索