AFNetworking漢化之“AFURLSessionManager”

  • 本文的寫作目的是為學習記錄,同時分享給大家,希望大神能夠對文中錯誤的理解進行指正。
  • 如果文章內容涉及到其他已經發表了,但文章中又未提及轉載事項,請及時與本人聯系。
  • 本文為個人理解,如果部分知識點與真實情況有出入,請忽略本文。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容