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;