NSURLSession:是苹果推出的对于 NSURLConnection的替代者
使用方法:
- 创建NSURLSessionConfiguration对象
- 用 configuration 对象配置一个 nsurlsession
- 用 nsurlsession 创建一个 task
- 因为在 nsurlsession 中 task 默认是挂起的,可以在 返回一个 task 之后做一些其他的配置,所以要对 task 执行 resume 方法,让其开始执行
NSURLSession 的task
- NSURLSessionDataTask:网络请求任务
- NSURLSessionUploadTask:继承于NSURLSessionDataTask:文件上传任务
- NSURLSessionDowloaderTask:下载任务,下载之后文件保存在沙盒中的 tmp 文件夹里,程序再次启动就会清理,需要手动保存
NSURLSession 与 NSURLConnection 的区别
- NSURLSession对网络请求做了加速:通过共享 NSURLsession这个全局的单例,实现 tcp 的复用,但是对于 connection,是每次连接都要进行一次 tcp 握手
- session 对 runloop 进行了封装,对于 connection 来说,要是在子线程发起一个网络请求,需要获取子线程的 runloop,不然 connection 的代理不会回调,或者调用 start 方法,他会在判断子线程的 runloop 没有开启的时候,自动创建一个,但是 session 不存在这种问题
- 可以配置一个全局的 session 来管理多个 task,也可以对一个 session 管理一个 task,并且对其进行单独配置,而 connection 只能整体配置,不可以进行单个配置
4.session 的数据是一点一点返回的,而 connection 是一次返回作呕的数据- session 支持后台下载
- session 下载的文件保存在 tmp 文件中,需要我们手动保存到磁盘,connection 是自动保存到磁盘的。