美文网首页IOS-第三方开源库使用AFNetworkingiOS
AFNetworking汉化之“AFURLSessionMana

AFNetworking汉化之“AFURLSessionMana

作者: 油菜小白 | 来源:发表于2016-05-03 15:43 被阅读737次
    • 本文的写作目的是为学习记录,同时分享给大家,希望大神能够对文中错误的理解进行指正。
    • 如果文章内容涉及到其他已经发表了,但文章中又未提及转载事项,请及时与本人联系。
    • 本文为个人理解,如果部分知识点与真实情况有出入,请忽略本文。

    1 前言

    1.1 概述

    虽然苹果的原生SDK中已经有很强大的网络请求API,例如NSURLSession、NSURLRequest等。但为了满足不同的网络需求,也同时为了代码简洁和易用性,诞生了许多第三方封装的网络框架。其中主流的包括ASIHTTPRequest、AFNetworking、MKNetworkKit等。

    • ASIHTTPRequest比较老,且作者已经停止更新了。
    • AFNetworking比ASIHTTPRequest简单,功能齐全,目前持续更新中(详见GitHub)。
    • MKNetworkKit最轻量,而且功能也比较齐全,但是也已经停止更新了。

    把框架添加到项目后,只要做简单的封装,就能实现HTTP请求、Json/XML解析、Reachability网络连接状态监视、多线程网络请求、数据传输的安全策略等各种网络请求功能。

    1.2 版本

    AFNetworking-2.5.4

    1.3 汉化文件

    AFURLSessionManager.h

    2 汉化代码

    #import <Foundation/Foundation.h>
    
    #import "AFURLResponseSerialization.h"
    #import "AFURLRequestSerialization.h"
    #import "AFSecurityPolicy.h"
    #import "AFNetworkReachabilityManager.h"
    
    #ifndef NS_DESIGNATED_INITIALIZER
    #if __has_attribute(objc_designated_initializer)
    #define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
    #else
    #define NS_DESIGNATED_INITIALIZER
    #endif
    #endif
    
    /**
     “AFURLSessionManager”类基于一个指定的“NSURLSessionConfiguration”对象,创建并管理一个“NSURLSession”对象。
     并且,“AFURLSessionManager”类符合“<NSURLSessionTaskDelegate>”、 “<NSURLSessionDataDelegate>”、 “<NSURLSessionDownloadDelegate>”和“<NSURLSessionDelegate>”委托。
    
     ## 子类说明
    
     “AFHTTPSessionManager”类,增加指定HTTP请求功能。
     如果你想为“AFURLSessionManager”类指定额外的HTTP请求,可以用“AFHTTPSessionManager”类来代替。
    
     ## “NSURLSession”和“NSURLSessionTask”的委托方法
    
     “AFURLSessionManager”支持以下委托方法:
    
     ### “NSURLSessionDelegate”
    
     - “URLSession:didBecomeInvalidWithError:”
     - “URLSession:didReceiveChallenge:completionHandler:”
     - “URLSessionDidFinishEventsForBackgroundURLSession:”
    
     ### “NSURLSessionTaskDelegate”
    
     - “URLSession:willPerformHTTPRedirection:newRequest:completionHandler:”
     - “URLSession:task:didReceiveChallenge:completionHandler:”
     - “URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:”
     - “URLSession:task:didCompleteWithError:”
    
     ### “NSURLSessionDataDelegate”
    
     - “URLSession:dataTask:didReceiveResponse:completionHandler:”
     - “URLSession:dataTask:didBecomeDownloadTask:”
     - “URLSession:dataTask:didReceiveData:”
     - “URLSession:dataTask:willCacheResponse:completionHandler:”
    
     ### “NSURLSessionDownloadDelegate”
    
     - “URLSession:downloadTask:didFinishDownloadingToURL:”
     - “URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:”
     - “URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:”
    
     上面这些方法中的任何一个方法被重写,那么必须先用“super”关键字调用父类的方法。
    
     ## 网络连接状况监控
    
     通过“reachabilityManager”属性,监视网络连接的状态和变化。
     应用程序可以选择监视网络连接状态,以防止或暂停任何外传请求。
     详细内容,请参考“AFNetworkReachabilityManager”类
    
     ## NSCoding说明
    
     - 编译管理器不包括Block属性。当使用“-initWithCoder:”方法或者“NSKeyedUnarchiver”类时,确定已经设置了委托回调的Block。
    
     ## NSCopying说明
    
     - “-copy”和“-copyWithZone:”方法返回一个新的管理器类,其中包含一个根据原来“NSURLSession”对象的配置所创建的、新的“NSURLSession”对象。
     - 操作拷贝对象时,不能包括任何只有强引用时才包含的委托回调的Block。不然当拷贝时,会存在一个指向原来会话管理器的隐性指针。
    
     @warning 后台会话管理器在使用期间,必须被拥有。这可以通过创建一个应用类或单例实现。
     */
    
    #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)
    
    @interface AFURLSessionManager : NSObject <NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate, NSURLSessionDownloadDelegate, NSSecureCoding, NSCopying>
    
    /**
     会话管理器
     */
    @property (readonly, nonatomic, strong) NSURLSession *session;
    
    /**
     当委托回调时,可能调用的操作队列
     */
    @property (readonly, nonatomic, strong) NSOperationQueue *operationQueue;
    
    /**
     当数据传输任务用“GET”、“POST”等方式时,在“dataTaskWithRequest:success:failure:”方法里创建的一个从服务器发回的响应。
     默认情况下,此属性设置为“AFJSONResponseSerializer”的一个实例。
    
     @warning “responseSerializer”必须不为空.
     */
    @property (nonatomic, strong) id <AFURLResponseSerialization> responseSerializer;
    
    ///-------------------------------
    /// @name 管理器的安全策略
    ///-------------------------------
    
    /**
     安全策略,用于在请求操作中,对服务器连接是否安全的信任值评估。
     在没有指定的情况下,“AFURLSessionManager”默认使用“defaultPolicy”。
     */
    @property (nonatomic, strong) AFSecurityPolicy *securityPolicy;
    
    ///--------------------------------------
    /// @name 监视网络连接状况
    ///--------------------------------------
    
    /**
     网络连接状况管理器,“AFURLSessionManager”默认使用“sharedManager”。
     */
    @property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager;
    
    ///----------------------------
    /// @name 获取网络会话的任务
    ///----------------------------
    
    /**
     在当前会话中,运行的数据、上传和下载的会话任务。
     */
    @property (readonly, nonatomic, strong) NSArray *tasks;
    
    /**
     在当前会话中,运行的所有数据(Data)会话任务
     */
    @property (readonly, nonatomic, strong) NSArray *dataTasks;
    
    /**
     在当前会话中,运行的所有上传(Upload)会话任务
    
     */
    @property (readonly, nonatomic, strong) NSArray *uploadTasks;
    
    /**
     在当前会话中,运行的所有下载(Download)会话任务
     */
    @property (readonly, nonatomic, strong) NSArray *downloadTasks;
    
    ///-------------------------------
    /// @name 管理回调的队列
    ///-------------------------------
    
    /**
     “completionBlock”的线程队列。
     如果为空,则在主线程中执行。
     */
    #if OS_OBJECT_HAVE_OBJC_SUPPORT
    @property (nonatomic, strong) dispatch_queue_t completionQueue;
    #else
    @property (nonatomic, assign) dispatch_queue_t completionQueue;
    #endif
    
    /**
     “completionBlock”的线程群。
     如果为空,则在一个私有线程群中执行。
     */
    #if OS_OBJECT_HAVE_OBJC_SUPPORT
    @property (nonatomic, strong) dispatch_group_t completionGroup;
    #else
    @property (nonatomic, assign) dispatch_group_t completionGroup;
    #endif
    
    ///---------------------------------
    /// @name 工作系统错误
    ///---------------------------------
    
    /**
     当首次调用返回nil时,是否重新在后台会话中创建上传任务。默认为“NO”。
    
     @bug 在iOS 7.0版本存在一个Bug:后台会话中的上传会话任务有时为“nil”。作为一个解决方法,如果这个属性是“YES”,AFNetworking将遵循苹果的建议再次尝试创建任务。
    
     @see https://github.com/AFNetworking/AFNetworking/issues/1675
     */
    @property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions;
    
    ///---------------------
    /// @name 初始化
    ///---------------------
    
    /**
     根据指定的configuration,创建并返回一个会话管理器。这是指定初始化方法。
    
     @param configuration 用于创建会话管理器的配置信息.
    
     @return 一个新建的会话管理器.
     */
    - (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
    
    /**
     当会话管理器无效时,可选的取消等待执行的会话任务。
    
     @param cancelPendingTasks 是否取消等待执行的会话任务.
     */
    - (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks;
    
    ///-------------------------
    /// @name 运行数据的会话任务
    ///-------------------------
    
    /**
     根据指定的request,创建一个“NSURLSessionDataTask”。
    
     @param request HTTP请求的request。
     @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。
     */
    - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
                            completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
    
    ///---------------------------
    /// @name 运行上传的会话任务
    ///---------------------------
    
    /**
     根据一个本地文件创建request对象,再用该request对象创建的一个“NSURLSessionUploadTask”对象
    
     @param request HTTP请求的request。
     @param fileURL 将要被上传的本地文件的URL。
     @param progress 一个监视当前上传进度的进度对象。
     @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。
    
     @see “attemptsToRecreateUploadTasksForBackgroundSessions”
     */
    - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
                                         fromFile:(NSURL *)fileURL
                                         progress:(NSProgress * __autoreleasing *)progress
                                completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
    
    /**
     根据一个HTTP体创建request对象,再用该request对象创建的一个“NSURLSessionUploadTask”对象
    
     @param request HTTP请求的request。
     @param bodyData 一个数据对象,包含将要被上传的HTTP体。
     @param progress 一个监视当前上传进度的进度对象。
     @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。
     */
    - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
                                         fromData:(NSData *)bodyData
                                         progress:(NSProgress * __autoreleasing *)progress
                                completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
    
    /**
     根据指定的流媒体request对象,创建的一个“NSURLSessionUploadTask”对象
    
     @param request HTTP请求的request。
     @param progress 一个监视当前上传进度的进度对象。
     @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;解析器生成的响应对象;执行错误对象(如果不存在错误,则为nil)。
     */
    - (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request
                                                 progress:(NSProgress * __autoreleasing *)progress
                                        completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;
    
    ///-----------------------------
    /// @name 运行下载的会话任务
    ///-----------------------------
    
    /**
     根据指定的reques对象,创建的一个“NSURLSessionDownloadTask”对象
    
     @param request HTTP请求的request。
     @param progress 一个监视当前下载进度的进度对象。
     @param destination 一个确定下载文件的存储路径的Block对象。有两个参数:目标路径和服务器响应对象,并且返回下载文件将要存放的URL。当下载的文件移动到指定目录后,临时文件将会自动删除。
     @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;下载文件的路径;网络或者解析错误对象(如果不存在错误,则为nil)。
    
     @warning 如果用background类型的“NSURLSessionConfiguration”,当应用程序终止时,这些Block对象将被清除。后台会话更适合用“-setDownloadTaskDidFinishDownloadingBlock:”方法去指定保存下载文件的URL,而不是本方法。
     */
    - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
                                             progress:(NSProgress * __autoreleasing *)progress
                                          destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
                                    completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler;
    
    /**
     根据指定的、需要恢复的数据,创建的一个“NSURLSessionDownloadTask”对象
    
     @param resumeData 需要恢复的数据对象。
     @param progress 一个监视当前下载进度的进度对象。
     @param destination 一个确定下载文件的存储路径的Block对象。有两个参数:目标路径和服务器响应对象,并且返回下载文件将要存放的URL。当下载的文件移动到指定目录后,临时文件将会自动删除。
     @param completionHandler 当会话任务结束时,执行该Block对象。该Block没有返回值,但有三个参数:服务器响应对象;下载文件的路径;网络或者解析错误对象(如果不存在错误,则为nil)。
     */
    - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData
                                                progress:(NSProgress * __autoreleasing *)progress
                                             destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
                                       completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler;
    
    ///---------------------------------
    /// @name 从会话任务中获取进度
    ///---------------------------------
      
    /**
     根据指定的会话任务,返回一个上传进度。
    
     @param uploadTask 上传会话任务。必须不为空。
    
     @return “NSProgress”对象,封装了指定上传会话任务的进度。如果为nil,则进度对象不可用。
     */
    - (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask;
    
    /**
     根据指定的会话任务,返回一个下载进度。
    
     @param downloadTask 下载会话任务。必须不为空。
    
     @return “NSProgress”对象,封装了指定下载会话任务的进度。如果为nil,则进度对象不可用。
     */
    - (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask;
    
    ///-----------------------------------------
    /// @name 设置会话的委托回调
    ///-----------------------------------------
    
    /**
     设置一个Block,当会话管理器变成无效时执行。用“NSURLSessionDelegate”的“URLSession:didBecomeInvalidWithError:    ”方法处理。
    
     @param block 一个Block对象,当会话管理器变成无效时执行。该Block没有返回值,但有两个参数:会话对象;与无效原因相关的错误对象。
     */
    - (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block;
    
    /**
     设置一个Block,当访问服务器资源需要授权时执行。用“NSURLSessionDelegate”的“URLSession:didReceiveChallenge:completionHandler:”方法处理。
    
     @param block 一个Block对象,当访问服务器资源需要授权时执行。该Block返回身份验证的相关处理,并且有三个参数:会话对象;身份验证对象;一个指针(指向应该被解决的质询)。
     */
    - (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block;
    
    ///--------------------------------------
    /// @name 设置会话任务的委托回调
    ///--------------------------------------
    
    /**
     设置一个Block,当一个会话任务需要重新设置“请求体类型的流文件”发送到远程服务器时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:needNewBodyStream:”方法处理。
    
     @param block 一个Block对象,当一个会话任务需要重新设置“请求体类型的流文件”时,执行。
     */
    - (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block;
    
    /**
     设置一个Blcok,当一个HTTP请求试图重定向到另外一个URL时,执行。用“NSURLSessionTaskDelegate”的“URLSession:willPerformHTTPRedirection:newRequest:completionHandler:”方法处理。
    
     @param block 一个Block对象,当HTTP请求尝试重定向一个新的URL时,执行。该Block返回将要重定向的请求对象,并且有三个参数:会话对象;重定向请求对象;该请求对象返回的响应对象。
     */
    - (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block;
    
    /**
     设置一个Block,当会话任务已经发送“访问服务器资源所需要的授权”时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:didReceiveChallenge:completionHandler:”方法处理。
    
     @param block 一个Block对象,当会话任务已经发送“访问服务器资源所需要的授权”时,执行。该Block返回对授权的处理(NSURLSessionAuthChallengeDisposition类型),并且有四个参数:会话对象;会话任务对象;授权对象;一个指针(指向用于解决授权的凭证)。
     */
    - (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block;
    
    /**
     设置一个Block,当定期追踪上传进度时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:”方法处理。
    
     @param block 一个Block对象,当一定数量的字节数据已经被上传到服务器时,执行。该Block没有返回值,但存在五个参数:会话对象;会话任务对象;上一次上传的字节数;已经上传的字节总数;根据最初HTTP体所确定的字节数,得出的剩余未上传字节数。该Block在主线程执行,并且可能会多次执行。
     */
    - (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block;
    
    /**
     设置一个Block,当会话任务发出已执行到末尾的信息时,执行。用“NSURLSessionTaskDelegate”的“URLSession:task:didCompleteWithError:”方法处理。
    
     @param block 一个Block对象,当会话任务已经完成时,执行。该Block没有返回值,但有三个参数:会话对象;会话任务对象;在执行会话任务时;产生的错误对象。
     */
    - (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block;
    
    ///-------------------------------------------
    /// @name 设置数据传输会话任务的委托回调
    ///-------------------------------------------
    
    /**
     设置一个Block对象,当data会话任务接收到一个响应对象时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didReceiveResponse:completionHandler:”方法处理。
    
     @param block 一个Block对象,当data会话任务接收到一个响应对象时,执行。该Block返回响应对象的处理,并且有三个参数:会话对象;data会话任务对象;接收到的响应对象。
     */
    - (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block;
    
    /**
     设置一个Block对象,当data会话任务转换成下载会话任务时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didBecomeDownloadTask:”方法处理。
    
     @param block 一个Block对象,当data会话任务转换成下载会话任务时,执行。该Block没有返回值,但有三个参数:会话对象;data会话任务对象;转换后的下载会话任务对象。
     */
    - (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block;
    
    /**
     设置一个Block对象,当data会话任务接受到数据时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:didReceiveData:”方法处理。
    
     @param block 一个Block对象,当已经从服务器中下载一定数量的字节数据后,执行。该Block没有返回值,但有三个参数:会话对象;data会话任务对象;已接收到得数据。该Block在会话对象的操作队列中执行,并且可能会多次执行。
     */
    - (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block;
    
    /**
     设置一个Block对象,当将要对data会话任务进行缓存操作时,执行。用“NSURLSessionDataDelegate”的“URLSession:dataTask:willCacheResponse:completionHandler:”方法处理。
    
     @param block 一个Block对象,当将要对data会话任务进行缓存操作时,执行。该Block返回缓存的响应对象(NSCachedURLResponse类型),并且存在三个参数:会话对象;data会话任务对象;已接收的响应对象。
     */
    - (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block;
    
    /**
     设置一个Block对象,一旦会话的所有消息队列全部被发送,则执行该Block。用“NSURLSessionDataDelegate”的“URLSessionDidFinishEventsForBackgroundURLSession:”方法处理。
    
     @param block 一个Block对象,当后台会话的全部任务都处理完毕时,执行,该Block没有返回值,但有一个参数:会话对象。
     */
    - (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block;
    
    ///-----------------------------------------------
    /// @name 设置下载会话任务的委托回调
    ///-----------------------------------------------
    
    /**
     设置一个Block,当下载会话任务结束时,执行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didFinishDownloadingToURL:”方法处理。
    
     @param block 一个Block对象,当下载会话任务处理完毕时,执行。该Block返回已下载的数据需要存储的路径,并且有三个参数:会话对象;下载会话任务对象;当前临时存储已下载数据的路径。还有一个“AFURLSessionDownloadTaskDidFailToMoveFileNotification”通知,其中object参数为下载会话任务,userInfo参数为错误对象。
     */
    - (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block;
    
    /**
     设置一个Block,当定期追踪下载进度时,执行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:”方法处理。
    
     @param block 一个Block对象,当一定数量的字节数据已经被下载时,执行。该Block没有返回值,但有五个参数:会话对象;下载会话任务对象;上一次下载的字节数;已经下载的字节总数;根据最初HTTP体所确定的字节数,得出的剩余未上传字节数。该Block在会话对象的操作队列中执行,并且可能会多次执行。
     */
    - (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block;
    
    /**
     设置一个Block,当一个下载任务已经恢复时,执行。用“NSURLSessionDownloadDelegate”的“URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:”方法处理。
    
     @param block 一个Block对象,当下载会话任务已经恢复时,执行。该Block没有返回值,但有四个参数:会话对象;下载会话任务对象;一个锚点,描述从什么位置继续下载该文件;剩余下载量。
     */
    - (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block;
    
    @end
    
    #endif
    
    ///--------------------
    /// @name 通知
    ///--------------------
    
    /**
     已弃用
     Posted when a task begins executing.
    
     @deprecated 用“AFNetworkingTaskDidResumeNotification”代替.
     */
     extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE;
    
    /**
     网络任务恢复时,广播该通知
     */
    extern NSString * const AFNetworkingTaskDidResumeNotification;
    
    /**
     已弃用
     Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task.
    
     @deprecated 用“AFNetworkingTaskDidCompleteNotification”代替.
     */
    extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE;
    
    /** 
     网络任务结束执行时,广播该通知。
     其中包括一个userInfo字典数据,userInfo字典中包含一个关于任务的额外信息。
     */
    extern NSString * const AFNetworkingTaskDidCompleteNotification;
    
    /**
     网络任务挂起(暂停)时,广播该通知。
     */
    extern NSString * const AFNetworkingTaskDidSuspendNotification;
    
    /**
     当一个网络会话(session)变为无效时,广播该通知。
     */
    extern NSString * const AFURLSessionDidInvalidateNotification;
    
    /**
     在一个网络会话(session)的下载任务期间,当移动一个临时的下载文件到指定目录时,如果遇到错误,广播该通知。
     */
    extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification;
    
    /**
     已弃用
     The raw response data of the task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if response data exists for the task.
    
     @deprecated 用“AFNetworkingTaskDidCompleteResponseDataKey”代替.
     */
    extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE;
    
    /**
     网络任务响应的原始数据数据。
    
     如果网络任务的响应存在数据,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
     */
    extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey;
    
    /**
     已弃用
     The serialized response object of the task. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if the response was serialized.
    
     @deprecated 用“AFNetworkingTaskDidCompleteSerializedResponseKey”代替.
     */
    extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE;
    
    /**
     已经完成解析一个网络响应对象。
    
     如果网络响应的数据已经完成解析,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
     */
    extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey;
    
    /**
     已弃用
     The response serializer used to serialize the response. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if the task has an associated response serializer.
    
     @deprecated 用“AFNetworkingTaskDidCompleteResponseSerializerKey”代替.
     */
    extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE;
    
    /** 
     网络响应的解析器,用于解析网络响应。
    
     如果网络任务关联了一个网络响应的解析器,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
     */
    extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey;
    
    /**
     已弃用
     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.
    
     @deprecated 用“AFNetworkingTaskDidCompleteAssetPathKey”代替.
     */
    extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE;
    
    /**
     下载任务关联的文件路径。
    
     如果一个响应数据直接存储到磁盘,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
    
     */
    extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey;
    
    /**
     已弃用
     Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the “AFNetworkingTaskDidFinishNotification” if an error exists.
    
     @deprecated 用“AFNetworkingTaskDidCompleteErrorKey”代替.
     */
    extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE;
    
    /**
     所有网络任务中得错误,以及解析网络任务响应数据中的错误。
    
     如果错误存在,该字符串包含在“AFNetworkingTaskDidFinishNotification”的userInfo字典中。
     */
    extern NSString * const AFNetworkingTaskDidCompleteErrorKey;
    

    参考
    GitHub( https://github.com/AFNetworking/AFNetworking/releases

    相关文章

      网友评论

      • 树伟:真想看懂:sweat_smile:
      • 4c47c3b1054a:喜欢,收了
      • 油菜小白:目前AFNetworking已经更新到3.0+,不过LZ的Xcode还停留在6.3,所以只能写写旧版本了:joy::joy::joy:有的地方表达不清,或者不符合实际的,还请各位多多包涵,多提提意见:dog::dog::dog:
      • iOS程序犭袁:辛苦了
      • 拂晓的云:楼主辛苦了,赞一个

      本文标题:AFNetworking汉化之“AFURLSessionMana

      本文链接:https://www.haomeiwen.com/subject/gbzlrttx.html