AFNetworking汉化之“AFURLSessionManager”

1 声明

1、本文的写作目的是为学习记录,同时分享给大家,希望大神能够对文中错误的理解进行指正。
2、如果文章内容涉及到其他已经发表了,但文章中又未提及转载事项,请及时与本人联系。
3、本文为个人理解,如果部分知识点与真实情况有出入,请忽略本文。

2 前言

2.1 概述

虽然苹果的原生SDK中已经有很强大的网络请求API,例如NSURLSession、NSURLRequest等。但为了满足不同的网络需求,也同时为了代码简洁和易用性,诞生了许多第三方封装的网络框架。其中主流的包括ASIHTTPRequest、AFNetworking、MKNetworkKit等。
  • ASIHTTPRequest比较老,且作者已经停止更新了。
  • AFNetworking比ASIHTTPRequest简单,功能齐全,目前持续更新中(详见GitHub)。
  • MKNetworkKit最轻量,而且功能也比较齐全,但是也已经停止更新了。
把框架添加到项目后,只要做简单的封装,就能实现HTTP请求、Json/XML解析、Reachability网络连接状态监视、多线程网络请求、数据传输的安全策略等各种网络请求功能。

2.2 版本

AFNetworking-2.5.4

2.3 汉化文件

AFURLSessionManager.h

3 汉化代码

[objc]  view plain  copy
  1. #import <Foundation/Foundation.h>  
  2.   
  3. #import "AFURLResponseSerialization.h"  
  4. #import "AFURLRequestSerialization.h"  
  5. #import "AFSecurityPolicy.h"  
  6. #import "AFNetworkReachabilityManager.h"  
  7.   
  8. #ifndef NS_DESIGNATED_INITIALIZER  
  9. #if __has_attribute(objc_designated_initializer)  
  10. #define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))  
  11. #else  
  12. #define NS_DESIGNATED_INITIALIZER  
  13. #endif  
  14. #endif  
  15.   
  16. /** 
  17.  “AFURLSessionManager”类基于一个指定的“NSURLSessionConfiguration”对象,创建并管理一个“NSURLSession”对象。 
  18.  并且,“AFURLSessionManager”类符合“<NSURLSessionTaskDelegate>”、 “<NSURLSessionDataDelegate>”、 “<NSURLSessionDownloadDelegate>”和“<NSURLSessionDelegate>”委托。 
  19.  
  20.  ## 子类说明 
  21.   
  22.  “AFHTTPSessionManager”类,增加指定HTTP请求功能。 
  23.  如果你想为“AFURLSessionManager”类指定额外的HTTP请求,可以用“AFHTTPSessionManager”类来代替。 
  24.   
  25.  ## “NSURLSession”和“NSURLSessionTask”的委托方法 
  26.  
  27.  “AFURLSessionManager”支持以下委托方法: 
  28.  
  29.  ### “NSURLSessionDelegate” 
  30.  
  31.  - “URLSession:didBecomeInvalidWithError:” 
  32.  - “URLSession:didReceiveChallenge:completionHandler:” 
  33.  - “URLSessionDidFinishEventsForBackgroundURLSession:” 
  34.  
  35.  ### “NSURLSessionTaskDelegate” 
  36.  
  37.  - “URLSession:willPerformHTTPRedirection:newRequest:completionHandler:” 
  38.  - “URLSession:task:didReceiveChallenge:completionHandler:” 
  39.  - “URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:” 
  40.  - “URLSession:task:didCompleteWithError:” 
  41.  
  42.  ### “NSURLSessionDataDelegate” 
  43.  
  44.  - “URLSession:dataTask:didReceiveResponse:completionHandler:” 
  45.  - “URLSession:dataTask:didBecomeDownloadTask:” 
  46.  - “URLSession:dataTask:didReceiveData:” 
  47.  - “URLSession:dataTask:willCacheResponse:completionHandler:” 
  48.  
  49.  ### “NSURLSessionDownloadDelegate” 
  50.  
  51.  - “URLSession:downloadTask:didFinishDownloadingToURL:” 
  52.  - “URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:” 
  53.  - “URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:” 
  54.   
  55.  上面这些方法中的任何一个方法被重写,那么必须先用“super”关键字调用父类的方法。 
  56.  
  57.  ## 网络连接状况监控 
  58.  
  59.  通过“reachabilityManager”属性,监视网络连接的状态和变化。 
  60.  应用程序可以选择监视网络连接状态,以防止或暂停任何外传请求。 
  61.  详细内容,请参考“AFNetworkReachabilityManager”类 
  62.  
  63.  ## NSCoding说明 
  64.   
  65.  - 编译管理器不包括Block属性。当使用“-initWithCoder:”方法或者“NSKeyedUnarchiver”类时,确定已经设置了委托回调的Block。 
  66.  
  67.  ## NSCopying说明 
  68.   
  69.  - “-copy”和“-copyWithZone:”方法返回一个新的管理器类,其中包含一个根据原来“NSURLSession”对象的配置所创建的、新的“NSURLSession”对象。 
  70.  - 操作拷贝对象时,不能包括任何只有强引用时才包含的委托回调的Block。不然当拷贝时,会存在一个指向原来会话管理器的隐性指针。 
  71.  
  72.  @warning 后台会话管理器在使用期间,必须被拥有。这可以通过创建一个应用类或单例实现。 
  73.  */  
  74.   
  75. #if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090)  
  76.   
  77. @interface AFURLSessionManager : NSObject <NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate, NSURLSessionDownloadDelegate, NSSecureCoding, NSCopying>  
  78.   
  79. /** 
  80.  会话管理器 
  81.  */  
  82. @property (readonlynonatomicstrongNSURLSession *session;  
  83.   
  84. /** 
  85.  当委托回调时,可能调用的操作队列 
  86.  */  
  87. @property (readonlynonatomicstrongNSOperationQueue *operationQueue;  
  88.   
  89. /** 
  90.  当数据传输任务用“GET”、“POST”等方式时,在“dataTaskWithRequest:success:failure:”方法里创建的一个从服务器发回的响应。 
  91.  默认情况下,此属性设置为“AFJSONResponseSerializer”的一个实例。 
  92.   
  93.  @warning “responseSerializer”必须不为空. 
  94.  */  
  95. @property (nonatomicstrongid <AFURLResponseSerialization> responseSerializer;  
  96.   
  97. ///-------------------------------  
  98. /// @name 管理器的安全策略  
  99. ///-------------------------------  
  100.   
  101. /** 
  102.  安全策略,用于在请求操作中,对服务器连接是否安全的信任值评估。 
  103.  在没有指定的情况下,“AFURLSessionManager”默认使用“defaultPolicy”。 
  104.  */  
  105. @property (nonatomicstrongAFSecurityPolicy *securityPolicy;  
  106.   
  107. ///--------------------------------------  
  108. /// @name 监视网络连接状况  
  109. ///--------------------------------------  
  110.   
  111. /** 
  112.  网络连接状况管理器,“AFURLSessionManager”默认使用“sharedManager”。 
  113.  */  
  114. @property (readwritenonatomicstrongAFNetworkReachabilityManager *reachabilityManager;  
  115.   
  116. ///----------------------------  
  117. /// @name 获取网络会话的任务  
  118. ///----------------------------  
  119.   
  120. /** 
  121.  在当前会话中,运行的数据、上传和下载的会话任务。 
  122.  */  
  123. @property (readonlynonatomicstrongNSArray *tasks;  
  124.   
  125. /** 
  126.  在当前会话中,运行的所有数据(Data)会话任务 
  127.  */  
  128. @property (readonlynonatomicstrongNSArray *dataTasks;  
  129.   
  130. /** 
  131.  在当前会话中,运行的所有上传(Upload)会话任务 
  132.   
  133.  */  
  134. @property (readonlynonatomicstrongNSArray *uploadTasks;  
  135.   
  136. /** 
  137.  在当前会话中,运行的所有下载(Download)会话任务 
  138.  */  
  139. @property (readonlynonatomicstrongNSArray *downloadTasks;  
  140.   
  141. ///-------------------------------  
  142. /// @name 管理回调的队列  
  143. ///-------------------------------  
  144.   
  145. /** 
  146.  “completionBlock”的线程队列。 
  147.  如果为空,则在主线程中执行。 
  148.  */  
  149. #if OS_OBJECT_HAVE_OBJC_SUPPORT  
  150. @property (nonatomicstrong) dispatch_queue_t completionQueue;  
  151. #else  
  152. @property (nonatomic, assign) dispatch_queue_t completionQueue;  
  153. #endif  
  154.   
  155. /** 
  156.  “completionBlock”的线程群。 
  157.  如果为空,则在一个私有线程群中执行。 
  158.  */  
  159. #if OS_OBJECT_HAVE_OBJC_SUPPORT  
  160. @property (nonatomicstrong) dispatch_group_t completionGroup;  
  161. #else  
  162. @property (nonatomic, assign) dispatch_group_t completionGroup;  
  163. #endif  
  164.   
  165. ///---------------------------------  
  166. /// @name 工作系统错误  
  167. ///---------------------------------  
  168.   
  169. /** 
  170.  当首次调用返回nil时,是否重新在后台会话中创建上传任务。默认为“NO”。 
  171.  
  172.  @bug 在iOS 7.0版本存在一个Bug:后台会话中的上传会话任务有时为“nil”。作为一个解决方法,如果这个属性是“YES”,AFNetworking将遵循苹果的建议再次尝试创建任务。 
  173.  
  174.  @see https://github.com/AFNetworking/AFNetworking/issues/1675 
  175.  */  
  176. @property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions;  
  177.   
  178. ///---------------------  
  179. /// @name 初始化  
  180. ///---------------------  
  181.   
  182. /** 
  183.  根据指定的configuration,创建并返回一个会话管理器。这是指定初始化方法。 
  184.  
  185.  @param configuration 用于创建会话管理器的配置信息. 
  186.  
  187.  @return 一个新建的会话管理器. 
  188.  */  
  189. - (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER;  
  190.   
  191. /** 
  192.  当会话管理器无效时,可选的取消等待执行的会话任务。 
  193.  
  194.  @param cancelPendingTasks 是否取消等待执行的会话任务. 
  195.  */  
  196. - (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks;  
  197.   
  198. ///-------------------------  
  199. /// @name 运行数据的会话任务  
  200. ///-------------------------  
  201.   
  202. /** 
  203.  根据指定的request,创建一个“NSURLSessionDataTask”。 
  204.  
  205.  @param request HTTP请求的request。 
  206.  @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。 
  207.  */  
  208. - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request  
  209.                             completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;  
  210.   
  211. ///---------------------------  
  212. /// @name 运行上传的会话任务  
  213. ///---------------------------  
  214.   
  215. /** 
  216.  根据一个本地文件创建request对象,再用该request对象创建的一个“NSURLSessionUploadTask”对象 
  217.  
  218.  @param request HTTP请求的request。 
  219.  @param fileURL 将要被上传的本地文件的URL。 
  220.  @param progress 一个监视当前上传进度的进度对象。 
  221.  @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。 
  222.  
  223.  @see “attemptsToRecreateUploadTasksForBackgroundSessions” 
  224.  */  
  225. - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request  
  226.                                          fromFile:(NSURL *)fileURL  
  227.                                          progress:(NSProgress * __autoreleasing *)progress  
  228.                                 completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;  
  229.   
  230. /** 
  231.  根据一个HTTP体创建request对象,再用该request对象创建的一个“NSURLSessionUploadTask”对象 
  232.   
  233.  @param request HTTP请求的request。 
  234.  @param bodyData 一个数据对象,包含将要被上传的HTTP体。 
  235.  @param progress 一个监视当前上传进度的进度对象。 
  236.  @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。 
  237.  */  
  238. - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request  
  239.                                          fromData:(NSData *)bodyData  
  240.                                          progress:(NSProgress * __autoreleasing *)progress  
  241.                                 completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;  
  242.   
  243. /** 
  244.  根据指定的流媒体request对象,创建的一个“NSURLSessionUploadTask”对象 
  245.   
  246.  @param request HTTP请求的request。 
  247.  @param progress 一个监视当前上传进度的进度对象。 
  248.  @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。 
  249.  */  
  250. - (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request  
  251.                                                  progress:(NSProgress * __autoreleasing *)progress  
  252.                                         completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;  
  253.   
  254. ///-----------------------------  
  255. /// @name 运行下载的会话任务  
  256. ///-----------------------------  
  257.   
  258. /** 
  259.  根据指定的reques对象,创建的一个“NSURLSessionDownloadTask”对象 
  260.   
  261.  @param request HTTP请求的request。 
  262.  @param progress 一个监视当前下载进度的进度对象。 
  263.  @param destination 一个确定下载文件的存储路径的Block对象。有两个参数:目标路径和服务器响应对象,并且返回下载文件将要存放的URL。当下载的文件移动到指定目录后,临时文件将会自动删除。 
  264.  @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;下载文件的路径;网络或者解析错误对象(如果不存在错误,则为nil)。 
  265.  
  266.  @warning 如果用background类型的“NSURLSessionConfiguration”,当应用程序终止时,这些Block对象将被清除。后台会话更适合用“-setDownloadTaskDidFinishDownloadingBlock:”方法去指定保存下载文件的URL,而不是本方法。 
  267.  */  
  268. - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request  
  269.                                              progress:(NSProgress * __autoreleasing *)progress  
  270.                                           destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination  
  271.                                     completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler;  
  272.   
  273. /** 
  274.  根据指定的、需要恢复的数据,创建的一个“NSURLSessionDownloadTask”对象 
  275.  
  276.  @param resumeData 需要恢复的数据对象。 
  277.  @param progress 一个监视当前下载进度的进度对象。 
  278.  @param destination 一个确定下载文件的存储路径的Block对象。有两个参数:目标路径和服务器响应对象,并且返回下载文件将要存放的URL。当下载的文件移动到指定目录后,临时文件将会自动删除。 
  279.  @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;下载文件的路径;网络或者解析错误对象(如果不存在错误,则为nil)。 
  280.  */  
  281. - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData  
  282.                                                 progress:(NSProgress * __autoreleasing *)progress  
  283.                                              destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination  
  284.                                        completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler;  
  285.   
  286. ///---------------------------------  
  287. /// @name 从会话任务中获取进度  
  288. ///---------------------------------  
  289.   
  290. /** 
  291.  根据指定的会话任务,返回一个上传进度。 
  292.  
  293.  @param uploadTask 上传会话任务。必须不为空。 
  294.  
  295.  @return “NSProgress”对象,封装了指定上传会话任务的进度。如果为nil,则进度对象不可用。 
  296.  */  
  297. - (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask;  
  298.   
  299. /** 
  300.  根据指定的会话任务,返回一个下载进度。 
  301.  
  302.  @param downloadTask 下载会话任务。必须不为空。 
  303.   
  304.  @return “NSProgress”对象,封装了指定下载会话任务的进度。如果为nil,则进度对象不可用。 
  305.  */  
  306. - (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask;  
  307.   
  308. ///-----------------------------------------  
  309. /// @name 设置会话的委托回调  
  310. ///-----------------------------------------  
  311.   
  312. /** 
  313.  设置一个Block,当会话管理器变成无效时执行。用“NSURLSessionDelegate”的“URLSession:didBecomeInvalidWithError:”方法处理。 
  314.  
  315.  @param block 一个Block对象,当会话管理器变成无效时执行。该Block没有返回值,但有两个参数:会话对象;与无效原因相关的错误对象。 
  316.  */  
  317. - (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block;  
  318.   
  319. /** 
  320.  设置一个Block,当访问服务器资源需要授权时执行。用“NSURLSessionDelegate”的“URLSession:didReceiveChallenge:completionHandler:”方法处理。 
  321.  
  322.  @param block 一个Block对象,当访问服务器资源需要授权时执行。该Block返回身份验证的相关处理,并且有三个参数:会话对象;身份验证对象;一个指针(指向应该被解决的质询)。 
  323.  */  
  324. - (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block;  
  325.   
  326. ///--------------------------------------  
  327. /// @name 设置会话任务的委托回调  
  328. ///--------------------------------------  
  329.   
  330. /** 
  331.  设置一个Block,当一个会话任务需要重新设置“请求体类型的流文件”发送到远程服务器时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:needNewBodyStream:”方法处理。 
  332.  
  333.  @param block 一个Block对象,当一个会话任务需要重新设置“请求体类型的流文件”时,执行。 
  334.  */  
  335. - (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block;  
  336.   
  337. /** 
  338.  设置一个Blcok,当一个HTTP请求试图重定向到另外一个URL时,执行。用“NSURLSessionTaskDelegate”的“URLSession:willPerformHTTPRedirection:newRequest:completionHandler:”方法处理。 
  339.  
  340.  @param block 一个Block对象,当HTTP请求尝试重定向一个新的URL时,执行。该Block返回将要重定向的请求对象,并且有三个参数:会话对象;重定向请求对象;该请求对象返回的响应对象。 
  341.  */  
  342. - (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block;  
  343.   
  344. /** 
  345.  设置一个Block,当会话任务已经发送“访问服务器资源所需要的授权”时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:didReceiveChallenge:completionHandler:”方法处理。 
  346.  
  347.  @param block 一个Block对象,当会话任务已经发送“访问服务器资源所需要的授权”时,执行。该Block返回对授权的处理(NSURLSessionAuthChallengeDisposition类型),并且有四个参数:会话对象;会话任务对象;授权对象;一个指针(指向用于解决授权的凭证)。 
  348.  */  
  349. - (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block;  
  350.   
  351. /** 
  352.  设置一个Block,当定期追踪上传进度时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:”方法处理。 
  353.  
  354.  @param block 一个Block对象,当一定数量的字节数据已经被上传到服务器时,执行。该Block没有返回值,但存在五个参数:会话对象;会话任务对象;上一次上传的字节数;已经上传的字节总数;根据最初HTTP体所确定的字节数,得出的剩余未上传字节数。该Block在主线程执行,并且可能会多次执行。 
  355.  */  
  356. - (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block;  
  357.   
  358. /** 
  359.  设置一个Block,当会话任务发出已执行到末尾的信息时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:didCompleteWithError:”方法处理。 
  360.  
  361.  @param block 一个Block对象,当会话任务已经完成时,执行。该Block没有返回值,但有三个参数:会话对象;会话任务对象;在执行会话任务时;产生的错误对象。 
  362.  */  
  363. - (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block;  
  364.   
  365. ///-------------------------------------------  
  366. /// @name 设置数据传输会话任务的委托回调  
  367. ///-------------------------------------------  
  368.   
  369. /** 
  370.  设置一个Block对象,当data会话任务接收到一个响应对象时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didReceiveResponse:completionHandler:”方法处理。 
  371.  
  372.  @param block 一个Block对象,当data会话任务接收到一个响应对象时,执行。该Block返回响应对象的处理,并且有三个参数:会话对象;data会话任务对象;接收到的响应对象。 
  373.  */  
  374. - (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block;  
  375.   
  376. /** 
  377.  设置一个Block对象,当data会话任务转换成下载会话任务时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didBecomeDownloadTask:”方法处理。 
  378.  
  379.  @param block 一个Block对象,当data会话任务转换成下载会话任务时,执行。该Block没有返回值,但有三个参数:会话对象;data会话任务对象;转换后的下载会话任务对象。 
  380.  */  
  381. - (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block;  
  382.   
  383. /** 
  384.  设置一个Block对象,当data会话任务接受到数据时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didReceiveData:”方法处理。 
  385.  
  386.  @param block 一个Block对象,当已经从服务器中下载一定数量的字节数据后,执行。该Block没有返回值,但有三个参数:会话对象;data会话任务对象;已接收到得数据。该Block在会话对象的操作队列中执行,并且可能会多次执行。 
  387.  */  
  388. - (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block;  
  389.   
  390. /** 
  391.  设置一个Block对象,当将要对data会话任务进行缓存操作时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:willCacheResponse:completionHandler:”方法处理。 
  392.  
  393.  @param block 一个Block对象,当将要对data会话任务进行缓存操作时,执行。该Block返回缓存的响应对象(NSCachedURLResponse类型),并且存在三个参数:会话对象;data会话任务对象;已接收的响应对象。 
  394.  */  
  395. - (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block;  
  396.   
  397. /** 
  398.  设置一个Block对象,一旦会话的所有消息队列全部被发送,则执行该Block。用“NSURLSessionDataDelegate”的“URLSessionDidFinishEventsForBackgroundURLSession:”方法处理。 
  399.  
  400.  @param block 一个Block对象,当后台会话的全部任务都处理完毕时,执行,该Block没有返回值,但有一个参数:会话对象。 
  401.  */  
  402. - (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block;  
  403.   
  404. ///-----------------------------------------------  
  405. /// @name 设置下载会话任务的委托回调  
  406. ///-----------------------------------------------  
  407.   
  408. /** 
  409.  设置一个Block,当下载会话任务结束时,执行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didFinishDownloadingToURL:”方法处理。 
  410.  
  411.  @param block 一个Block对象,当下载会话任务处理完毕时,执行。该Block返回已下载的数据需要存储的路径,并且有三个参数:会话对象;下载会话任务对象;当前临时存储已下载数据的路径。还有一个“AFURLSessionDownloadTaskDidFailToMoveFileNotification”通知,其中object参数为下载会话任务,userInfo参数为错误对象。 
  412.  */  
  413. - (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block;  
  414.   
  415. /** 
  416.  设置一个Block,当定期追踪下载进度时,执行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:”方法处理。 
  417.  
  418.  @param block 一个Block对象,当一定数量的字节数据已经被下载时,执行。该Block没有返回值,但有五个参数:会话对象;下载会话任务对象;上一次下载的字节数;已经下载的字节总数;根据最初HTTP体所确定的字节数,得出的剩余未上传字节数。该Block在会话对象的操作队列中执行,并且可能会多次执行。 
  419.  */  
  420. - (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block;  
  421.   
  422. /** 
  423.  设置一个Block,当一个下载任务已经恢复时,执行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:”方法处理。 
  424.  
  425.  @param block 一个Block对象,当下载会话任务已经恢复时,执行。该Block没有返回值,但有四个参数:会话对象;下载会话任务对象;一个锚点,描述从什么位置继续下载该文件;剩余下载量。 
  426.  */  
  427. - (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block;  
  428.   
  429. @end  
  430.   
  431. #endif  
  432.   
  433. ///--------------------  
  434. /// @name 通知  
  435. ///--------------------  
  436.   
  437. /** 
  438.  已弃用 
  439.  Posted when a task begins executing. 
  440.  
  441.  @deprecated 用“AFNetworkingTaskDidResumeNotification”代替. 
  442.  */  
  443. extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE;  
  444.   
  445. /** 
  446.  网络任务恢复时,广播该通知 
  447.  */  
  448. extern NSString * const AFNetworkingTaskDidResumeNotification;  
  449.   
  450. /** 
  451.  已弃用 
  452.  Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. 
  453.  
  454.  @deprecated 用“AFNetworkingTaskDidCompleteNotification”代替. 
  455.  */  
  456. extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE;  
  457.   
  458. /**  
  459.  网络任务结束执行时,广播该通知。 
  460.  其中包括一个userInfo字典数据,userInfo字典中包含一个关于任务的额外信息。 
  461.  */  
  462. extern NSString * const AFNetworkingTaskDidCompleteNotification;  
  463.   
  464. /** 
  465.  网络任务挂起(暂停)时,广播该通知。 
  466.  */  
  467. extern NSString * const AFNetworkingTaskDidSuspendNotification;  
  468.   
  469. /** 
  470.  当一个网络会话(session)变为无效时,广播该通知。 
  471.  */  
  472. extern NSString * const AFURLSessionDidInvalidateNotification;  
  473.   
  474. /** 
  475.  在一个网络会话(session)的下载任务期间,当移动一个临时的下载文件到指定目录时,如果遇到错误,广播该通知。 
  476.  */  
  477. extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification;  
  478.   
  479. /** 
  480.  已弃用 
  481.  The raw response data of the task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if response data exists for the task. 
  482.  
  483.  @deprecated 用“AFNetworkingTaskDidCompleteResponseDataKey”代替. 
  484.  */  
  485. extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE;  
  486.   
  487. /** 
  488.  网络任务响应的原始数据数据。 
  489.   
  490.  如果网络任务的响应存在数据,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。 
  491.  */  
  492. extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey;  
  493.   
  494. /** 
  495.  已弃用 
  496.  The serialized response object of the task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if the response was serialized. 
  497.  
  498.  @deprecated 用“AFNetworkingTaskDidCompleteSerializedResponseKey”代替. 
  499.  */  
  500. extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE;  
  501.   
  502. /** 
  503.  已经完成解析一个网络响应对象。 
  504.   
  505.  如果网络响应的数据已经完成解析,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。 
  506.  */  
  507. extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey;  
  508.   
  509. /** 
  510.  已弃用 
  511.  The response serializer used to serialize the response. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if the task has an associated response serializer. 
  512.  
  513.  @deprecated 用“AFNetworkingTaskDidCompleteResponseSerializerKey”代替. 
  514.  */  
  515. extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE;  
  516.   
  517. /**  
  518.  网络响应的解析器,用于解析网络响应。 
  519.   
  520.  如果网络任务关联了一个网络响应的解析器,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。 
  521.  */  
  522. extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey;  
  523.   
  524. /** 
  525.  已弃用 
  526.  The file path associated with the download task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if an the response data has been stored directly to disk. 
  527.  
  528.  @deprecated 用“AFNetworkingTaskDidCompleteAssetPathKey”代替. 
  529.  */  
  530. extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE;  
  531.   
  532. /** 
  533.  下载任务关联的文件路径。 
  534.   
  535.  如果一个响应数据直接存储到磁盘,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。 
  536.   
  537.  */  
  538. extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey;  
  539.   
  540. /** 
  541.  已弃用 
  542.  Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if an error exists. 
  543.  
  544.  @deprecated 用“AFNetworkingTaskDidCompleteErrorKey”代替. 
  545.  */  
  546. extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE;  
  547.   
  548. /** 
  549.  所有网络任务中得错误,以及解析网络任务响应数据中的错误。 
  550.   
  551.  如果错误存在,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。 
  552.  */  
  553. extern NSString * const AFNetworkingTaskDidCompleteErrorKey;  

4 参考

GitHub( https://github.com/AFNetworking/AFNetworking/releases )


转:http://blog.csdn.net/h908232373/article/details/51305318

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值