AF学习笔记三

在AFURLSessionManager类里创建NSURLSessionDataTask:

- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
                            completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler;

先说说NSURLSessionDataTask的父类:
NSURLSessionTask
它是记录request一生的类,从下面的数据不难看出:
它的属性有:
taskIdentifier、
originalRequest、
currentRequest、
response、
progress、
earliestBeginDate、
countOfBytesReceived、
countOfBytesSent、
state、
priority。。。

方法有:

  • (void)suspend;
  • (void)resume;

再说说NSURLSession:
NSURLSession 创建一个NSURLSessionTask成功代表着一个资源已经被加载,NSURLSessionTask的初始化状态是被挂起的。

@interface NSURLSession : NSObject

它是在Foundation框架里的。
NSURLSession是NSURLConnection的一个替代API。它提供了影响策略的选项,以及各个方面从该机制中检索NSURLRequest对象的机制网络。NSURLSession可以绑定到delegate对象。在session的生命周期内delegate被某些事件唤起,如服务器身份验证或确定要加载的资源应该转换为下载。NSURLSession实例是线程安全的。
NSURLSessionTask 是一个抽象类,如果要使用那么只能使用它的子类。

@interface NSURLSessionDataTask : NSURLSessionTask
@interface NSURLSessionUploadTask : NSURLSessionDataTask
@interface NSURLSessionDownloadTask : NSURLSessionTask
@interface NSURLSessionStreamTask : NSURLSessionTask

然后再说说基于以上类的管理类:AFURLSessionManager
“AFURLSessionManager”类基于指定的“NSURLSessionConfiguration”对象创建并管理一个“NSURLSession”对象, AFURLSessionManager符合< NSURLSessionTaskDelegate >,< NSURLSessionDataDelegate >,< NSURLSessionDownloadDelegate >和< NSURLSessionDelegate >四个代理。
AFURLSessionManager 类通过方法交换执行af_resume()方法,实际却是执行AFURLConnectionOperation类的resume()方法,并在执行完成发出通知(AFNSURLSessionTaskDidResumeNotification)告诉AFURLSessionManager已经完成resume,同时在通知执行方法selector时再发出AFNetworkingTaskDidResumeNotification通知,后一个通知在AFNetworkActivityIndicatorManager和UIRefreshControl类里被接收到。NSURLSessionDelegate、NSURLSessionTaskDelegate、NSURLSessionDataDelegate、NSURLSessionDownloadDelegate所执行的代理方法里都要给AF传值。

你可能感兴趣的:(AF学习笔记三)