标签:
一转眼,AF已经更新到了3.0版本。目前cocoapods上的最新版本是3.0 beta1。在3.0的版本里面,AF全面地使用NSURLSession代替了NSURLConnection。之前花了一些时间学习NSURLSession,在这里的学习终于派上了用场。在这里主要学习3.0版本的使用。希望在项目中能够顺利地过度到AFNetwoking 3.0版本。此外,随着Objective-c慢慢被Swift替代,AFNetworking 3.0可能是最后一个大版本更新。本文会一直随着AN的更新继续更新,也是一个不断学习的过程。
在3.0时代,AFN精简了结构,全面使用了NSURLSession。
AFHTTPSessionManager是AFURLSessionManager的子类。
AFURLSessionManager实现了以下几种NSURLSession的代理方法
NSURLSessionDelegateURLSession:didBecomeInvalidWithError:URLSession:didReceiveChallenge:completionHandler:URLSessionDidFinishEventsForBackgroundURLSession:NSURLSessionTaskDelegateURLSession:willPerformHTTPRedirection:newRequest:completionHandler:URLSession:task:didReceiveChallenge:completionHandler:URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:URLSession:task:didCompleteWithError:NSURLSessionDataDelegateURLSession:dataTask:didReceiveResponse:completionHandler:URLSession:dataTask:didBecomeDownloadTask:URLSession:dataTask:didReceiveData:URLSession:dataTask:willCacheResponse:completionHandler:NSURLSessionDownloadDelegateURLSession:downloadTask:didFinishDownloadingToURL:URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:在AFURLSessionManager中,主要的三个属性如下
session实现了会话,operationQueue是一个操作队列。responseSerializer是实现了AFURLResponseSerialization协议的一个对象。
Manager中还包括了安全协议的对象和连通性的对象。这两个类将在后面谈到。
下面是Task的内容,包含与当前Session中
回调块队列,包括了在主队列和私有队列的两个部分
初始化方法
创建一个NSURLSessionDataTask数据性任务
创建`NSURLSessionUploadTask 上传任务
创建NSURLSessionDownloadTask 下载任务
获得一个特定任务的progress进度
Session Delegate Callbacks 设置会话代理回调
Task Delegate Callbacks 设置任务代理回调
设置一个block去追踪上传进度
Setting Data Task Delegate Callbacks 设置数据任务代理的回调设置一个在数据任务获得response的时候回调block
设置一个block当数据任务变成下载的任务的时候执行
设置一个block绝对是否缓存数据任务
Download Task Delegate Callbacks 下载任务代理回调设置block当下载任务完成下载后
设置block去追踪下载任务进度情况
设置block当下载任务执行/恢复的时候 执行
头文件的内容基本就是以上的了。可以看到整个AF的体系非常清晰完整,没有多余的东西,头文件只暴露了应该暴露的东西,值得我们去学习。
AFURLSessionManager从源码中可以看到,AFURLSessionManager实现了
1
|
|
首先需要设置url和NSURLConfirguration
根据request生成对应的NSURLSessionTask。 
来看看执行后的信息
这里由于使用的AFHTTPResponseSerializer(API的问题,仅仅支持text/plain)所以在获取的数据后,我们自己要json序列化。如果是设计好的API,直接使用AFJSONRequestSerializer就可以在回调中获取到json格式的数据了。
可以看到,整个使用还是很方便的。我们可以根据自己的需求配置不同设置。
标签:
原文地址:http://www.cnblogs.com/DMDD/p/5045845.html