ios 底层

NSURLSession与NSURLConnection的区别

2019-06-18  本文已影响0人  吕建雄

NSURLSession是2013年苹果全球开发者大会上(WWDC2013)随iOS7一起发布的,是对NSURLConnection进行了重构优化后的新的网络接口。

iOS9.0开始,NSURLConnection中发送请求的两个方法已经过期(同步请求/异步请求),初始化网络连接的方法也被设置为过期,系统不在推荐使用,建议使用NSURLSession发送网络请求。见下图:

https://developer.apple.com/documentation/foundation/nsurlsession?language=occ

NSURLConnection截图 NSURLConnection废弃方法

NSURLSession介绍:

NSURLSession API包含许多不同的类,他们以一种相当复杂的方式一起工作,如果您单独阅读参考文档,可能就不太明显。在使用API之前,请阅读URL Loading System概述。第一步,上次和下载小节的文章提供了实用NSURLSession执行常见任务的示例;

附:https://developer.apple.com/documentation/foundation/url_loading_system?language=objc

task from URL sessions

NSURLSession与NSConnection的区别

1、普通任务和上传

NSURLSession针对上传/下载等复杂的网络提供了专门的解决方案,针对普通、上传和下载分别对应三种不同的网络请求任务:NSURLSessionDataTask,NSURLUploadDataTask,NSURLDownloadDataTask。创建的task都是挂起状态,需要resume才能启动。

当服务器返回的数据较小的时候,NSURLSession和NSURLConnection没有什么区别。执行上传任务时,NSURLSession与NSURLConnection一样需要设置POST请求的请求体进行上传。

2、下载任务方式

NSURLConnection下载文件时,先是将整个文件下载到内存,然后在写入到沙盒,如果文件比较大,就会出现内存保障的情况

NSURLSessionDownloadTask下载文件,会默认下载到沙盒的tmp文件中,不会出现内存暴涨的情况,但是在下载完成后会把tmp中的临时文件删除,需要在初始化任务方法时,在completionHandler回调中增加保存文件的代码。

3、请求方法的控制

NSURLConnection实例化对象,实例化开始,默认请求就发送不需要调用start方法。而cancel可以停止请求的发送,停止后不能继续访问,需要创建新的请求。

NSURLSession有三个控制方法,cancel,suspend,resume,暂停后可以通过继续恢复当前的请求任务。

4、断点续传的方式

NSURLConnection进行断点下载,通过设置访问请求的HTTPHeaderField的Range属性,开启运行循环,NSURLConnection的代理方法作为运行循环的事件源,接收到下载数据时代理方法就会持续调用,并使用NSOutputStream管道流进行数据保存。

NSURLSession进行断点下载,当暂停下载任务后,如果downloadTask为空,调用- (void)cancelByProducingResumeData:(void (^)(NSData *resumeData))completionHandler;这个方法接收一个参数,完成处理代码块,这个代码块有一个NSData类型的resumeData参数,如果resumeData非空,就保存这个对象到视图控制器的resumeData中,在点击再次下载时,通过调用- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData  completionHandler:(void (^)(NSURL *location, NSURLResponse *response, NSError *error))completionHandler;方法进行继续下载操作。

5、配置信息

NSURLSession通过NSURLSessionConfiguration类的参数可以设置配置信息,其决定了cookie,安全和高速缓存策略,最大主机连接数,资源管理,网络超时等配置。

NSURLConnection不能进行这个配置,而是依赖于一个全局的配置对象,缺乏灵活性

上一篇下一篇

猜你喜欢

热点阅读