1. NSSession 是 iOS 7 之后发布的,代替原来的 NSURLConnection
2. NSURLSession 中的请求都看做一个请求任务(task),task 的继承关系如下图
NSURLSessionTask 是一个抽象类,提供了一些基本的方法
NSURLSessionDataTask 是一个具体的 task 类,可以获取数据
NSURLSessionDownloadTask 是一个具体的 task 类,可以下载数据
NSURLSessionUploadTask 是一个具体的 task 类,可以上传数据
NSURLSessionStreamTasj 是一个具体的 task 类,以流的方式请求数据,使用较少
每一个类都有一个与之对应的 协议,后面会介绍每个协议
1. 为了方便,系统提供了一个供全局使用的 NSURLSession 单例,通过下面的方法可以获得单例类的对象
@property (class, readonly, strong) NSURLSession *sharedSession;
2. 使用单例类的缺点是不能实时监控获取数据的情况,例如进度。如果向获取实时情况,就要使用代理,后面会介绍代理方法
设置代理方法可以使用下面的方法
1 // @param configuration 配置信息对象 2 // @param delegate 代理对象 3 // @param queue 代理方法在哪个线程中运行,如果传 nil 则会在子线程中运行代理方法 4 + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id <NSURLSessionDelegate>)delegate delegateQueue:(nullable NSOperationQueue *)queue;