NSURLSession是比Apple的NSURLConnection新的网络SDK .第三个旧选择是CFNetwork.
这里的问题是找出它们之间最大的区别,以了解Apple为何会像这样发展.
谢谢
1> dgatwood..:
整个模型是不同的.NSURLSession的设计基于这样的假设:您将需要大量需要类似配置的请求(标准的标题集等),并且如果您这样做会让生活变得更加轻松.
NSURLSession还提供对后台下载的支持,这使得可以在应用程序未运行时(或在iOS上的后台运行时)继续下载资源.对于某些用例,这也是一个重大胜利.
NSURLSession还提供相关请求的分组,从而可以轻松取消与特定工作单元关联的所有请求,例如在用户关闭窗口或选项卡时取消与加载网页相关的所有负载.
NSURLSession还提供了使用块来请求数据的更好的接口,因为它允许您将它们与委托方法结合起来进行自定义身份验证处理,重定向处理等,而使用NSURLConnection,如果您突然意识到您需要执行这些操作,那么必须重构您的代码以不使用基于块的回调.
2> Avijit Nagar..:
NSURLConnection的
构成基础URL加载系统的一组相互关联的组件:NSURLRequest,NSURLResponse,NSURLProtocol,NSURLCache,NSHTTPCOOKIEStorage,NSURLCredentialStorage及其同名,NSURLConnection
NSURLRequest对象被传递给NSURLConnection对象.委托(符合以前的非正式和协议)作为NSURLResponse异步响应,并且从服务器发送任何关联的NSData
在将请求发送到服务器之前,将查询共享高速缓存,并且根据策略和可用性,可以立即且透明地返回高速缓存的响应.如果没有可用的缓存响应,则使用选项缓存其对任何后续请求的响应.在向服务器协商请求的过程中,该服务器可以发出认证质询,该质询由共享COOKIE或凭证存储自动处理,或由连接委托处理.还可以通过已注册的NSURLProtocol对象拦截传出请求,以根据需要无缝地更改加载行为.
NSURLSession
除了同名类NSURLSession之外,还指一组相互依赖的类.NSURLSession由与之前相同的部分组成,包括NSURLRequest,NSURLCache等,但是将NSURLConnection替换为NSURLSession,NSURLSessionConfiguration和NSURLSessionTask的三个子类:NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDownloadTask.
NSURLSessionTask是一个抽象子类,有三个直接使用的具体子类:NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDownloadTask.这三个类封装了现代应用程序的三个基本网络任务:获取数据,如JSON或XML,以及上传和下载文件.更多
3> Jaywant Khed..:
NSURLSession和NSURLConnection之间的区别
NSURLSession
注意 :( NSURLConneciton在OS X 10.11和iOS 9.0中已弃用)
1) NSURLSession的设计基于这样的假设,即您将需要大量需要类似配置的请求(标头集合等),并使生活更加轻松.
2) NSURLSession还提供对后台下载的支持,这使得可以在您的应用未运行时或在iOS后台时继续下载资源.
3) NSURLSession还提供相关请求的分组,轻松取消与特定工作单元关联的所有请求,例如取消与特定工作单元关联的所有请求,例如取消与加载Web相关的所有负载用户关闭窗口或选项卡时的页面
4) NSURLSession还提供了使用块来请求数据的更好的接口,它允许您将它们与委托方法相结合,以进行自定义身份验证处理,重定向处理等.
NSURLSessionConfiguration类型
1)defaultSessionConfiguration
Creates a default configuration object that uses the disk-persisted global cache, credential and COOKIE storage objects.
2)ephemeralSessionConfiguration
Similar to the default configuration, except that all session-related data is stored in memory. Think of this as a “private” session.
3)backgroundSessionConfiguration
Lets the session perform upload or download tasks in the background. Transfers continue even when the app itself is suspended or terminated
NSURLSessionTasks的类型
1)数据任务(NSURLSessionDataTask)
数据任务用于从服务器请求数据,例如JSON数据.这些数据通常存储在内存中,永远不会触及文件系统我们可以使用NSURLSessionDataTask.
2)上传任务(NSURLSessionUploadTask)
上载任务用于将数据上载到远程目标.我们可以使用NSURLSessionUploadTask.
3)下载任务(NSURLSessionDownloadTask)
下载文件并存储在临时位置.我们可以使用NSURLSessionDownloadTask.
NSURLSession和NSURLConnection之间的主要区别
NSURLConnection的:
如果我们与NSURLConnection打开连接并且系统中断我们的应用程序,当我们的应用程序进入后台模式时,我们收到或发送的所有内容都将丢失.
NSURLSession
解决这个问题,也让我们没有进程下载.即使我们没有访问权限,它也会管理连接过程.你需要使用
application:handleEventsForBackgroundURLSession:completionHandler in your AppDelegate
有关详细信息,请参阅NSURLSession和NSURLConnection之间的区别