NSURLSession
NSURLSession是iOS7中新的网络接口。程序在前台时,NSURLSession与NSURLConnection可以互相替代工作。
功能
- 通过URL将数据下载到内存
- 通过URL将数据下载到文件系统
- 将数据上传到指定URL
- 在
后台
完成上述功能
可设置的工作模式
默认会话模式(default)
:工作模式类似于原来的NSURLConnection,使用的是基于磁盘缓存的持久化策略,使用用户keychain中保存的证书进行认证授权。
瞬时会话模式(ephemeral)
:该模式不使用磁盘保存任何数据。所有和会话相关的caches,证书,cookies等都被保存在RAM中,因此当程序使会话无效,这些缓存的数据就会被自动清空。
后台会话模式(background)
:该模式在后台完成上传和下载,在创建Configuration对象的时候需要提供一个NSString类型的ID用于标识完成工作的后台会话。
简单使用代码示范
代码中除了NSURLSession,还用到 NSURLSessionConfiguration
NSURLSessionDataTask
,下面分别介绍这两个类
NSURLSessionConfiguration
用于配置NSURLSession
的属性
三种模式
三种对应前面介绍的可设置的工作模式
属性
NSURLSessionTask
基本网络任务类。有三个子类,分别用以获取数据、上传和下载。
继承关系图
这三种类型的Task都是通过NSURLSession 的实例对象中的方法创建
NSURLSessionDataTask
可以上传数据,上传完成后再进行下载
NSURLSessionUploadTask
上传数据
NSURLSessionDownloadTask
下载数据,支持断点续传
TASK Delegate
- NSURLSessionDownloadDelegate