热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NSURLConnection和NSURLSession之间最大的区别是什么?

如何解决《NSURLConnection和NSURLSession之间最大的区别是什么?》经验,为你挑选了3个好方法。

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之间的区别


推荐阅读
  • 这是一个基于 React 构建的掘金移动版应用,主要模仿了掘金的 UI 设计,并进行了部分自定义调整。项目专注于移动端体验,同时支持服务端渲染和渐进式网络应用(PWA)功能。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文将详细介绍Python中一个非常实用的HTTP客户端库——requests模块,它不仅易于使用,而且功能强大,非常适合用于开发网络应用或进行Web数据抓取。 ... [详细]
  • 深入理解FastDFS
    FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ... [详细]
  • HTTP(超文本传输协议)是互联网上用于客户端和服务器之间交换数据的主要协议。本文详细介绍了HTTP的工作原理,包括其请求-响应机制、不同版本的发展历程以及HTTP数据包的具体结构。 ... [详细]
  • 本地存储组件实现对IE低版本浏览器的兼容性支持 ... [详细]
  • Android 6.0 切换指定 Wi-Fi 的解决方案
    本文详细介绍了在 Android 6.0 系统中切换到指定 Wi-Fi 的方法,包括常见的问题、原因分析及解决方案。通过官方文档和代码示例,帮助开发者更好地理解和实现这一功能。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • Android中解析XML文件的实践指南
    本文详细介绍了在Android应用开发中解析XML文件的方法,包括从本地文件和网络资源获取XML文件的不同途径,以及使用DOM、SAX和PULL三种解析方式的具体实现。 ... [详细]
  • 本文详细介绍了Oracle数据库中审计日志(audit trail)的配置方法及各参数选项的功能,包括如何启用系统范围的审计记录,以及如何将审计数据存储在不同的位置和格式。 ... [详细]
  • 本文通过一个简单的 C++ 示例,深入分析了当使用 `vector::resize` 方法调整向量大小时,对象的构造函数和析构函数被调用的具体情况。示例代码展示了如何创建一个包含自定义类的对象的向量,并通过调整其大小来观察构造和析构的过程。 ... [详细]
  • 深入探讨PHP中的输出缓冲技术(Output Buffering)
    本文深入解析了PHP中输出缓冲(Output Buffering)的原理及其在Web开发中的应用,特别是如何通过输出缓冲技术有效管理HTTP头部信息,提高代码的灵活性与健壮性。 ... [详细]
  • 本文详细介绍了如何在Android应用中处理和使用Cookie,包括登录时获取Cookie并将其存储,以及在WebView中同步这些Cookie以保持用户会话。 ... [详细]
  • Thequestion:HowcanIbenotifiedwhentheframeofmyUICollectionViewchangessothatImayrun ... [详细]
author-avatar
手机用户2602929101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有