使用URLSession所有的网络访问都是有缓存的,缓存文件自动保存在tmp文件夹中,URLSession本身实现的时候,就是少量多次的!

l 使用defaultSessionConfiguration配置建立的会话

退出到首页时,任务会被自动挂起

重新进入应用时,任务会自动继续

l 使用backgroundSessionConfiguration配置建立的会话

在退出首页时,后台的下载任务仍然进行中,一直到下载完成

重新进入首页时,才会触发代理方法,拷贝文件

如果没有下载完成,重新进入应用时,下载任务会自动继续

l 对于一次性数据访问,仍然可以使用NSURLConnection!

l 1. NSURL

l 2. NSURLRequest

l 3. NSURLSession

l 4. NSURLSessionTask

l 5. resume启动任务

l 如果是简单的网络数据GET、POST,仍然使用NSURLConnection

一、NSURLSession

NSURLSession是iOS7中新的网络接口,与NSURLConnection是并列的。当程序在前台时,NSURLSession与NSURLConnection可以互相替代。如果用户强制将程序关闭,NSURLSession会被结束。

NSURLSession提供的功能:

l 通过URL将数据下载到内存

l 通过URL将数据下载到文件系统

l 将数据上传到指定URL

l 在后台完成上述功能

二、NSURLSessionConfiguration

作用:用于定义和配置 NSURLSession 对象

每一个NSURLSession对象都可以设置不同的NSURLSessionConfiguration,从而满足应用内不同类型的网络请求

NSURLSessionConfiguration的三种类型:

l defaultSessionConfiguration 默认session配置,类似 NSURLConnection 的标准配置,使用硬盘来存储缓存数据

l ephemeralSessionConfiguration 临时session配置,与默认配置相比,这个配置不会将缓存、cookie等存在本地,只会存在内存里,所以当程序退出时,所有的数据都会消失

l backgroundSessionConfiguration 后台session配置,与默认配置类似,不同的是会在后台开启另一个线程来处理网络数据

三、NSURLSessionTask

NSURLSession 使用 NSURLSessionTask 来具体执行网络请求的任务

NSURLSessionTask 支持网络请求的取消、暂停和恢复,比如下载文件暂停之后再恢复就能够自动从上次的进度继续下载。NSURLSessionTask还能获取数据的读取进度

NSURLSessionTask的三种类型:

l NSURLSessionDataTask 处理一般的NSData数据对象,比如通过GET或POST方式从服务器获取JSON或XML返回等等,但不支持后台获取

l NSURLSessionUploadTask 用于上传文件,支持后台上传

l NSURLSessionDownloadTask 用于下载文件,支持后台下载

四、NSURLSession的使用

使用NSURLSessionConfiguration来配置 NSURLSession 对象

用NSURLSession对象来启动一个NSURLSessionTask对象

也可以使用系统全局的sharedSession单例来满足大多数的需求

注:相比较NSURLConnection的返回处理,NSURLSession提供了灵活的数据返回方式,可以使用简单的block方式来处理返回数据,也可以使用更强大的delegate

iOS基础 - NSURLSession的更多相关文章

  1. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  2. iOS 基础日记-修饰符

    今晚随便温习了一下iOS 基础关于修饰符这块的东西,下面简单的来描述一下,其中有的也是在网络学习到的: strong与weak是由ARC新引入的对象变量属性 ARC的解释:ARC引入了新的对象的生命周 ...

  3. iOS基础问答面试

    <简书社区 — Timhbw>iOS基础问答面试题连载(一)-附答案:http://www.jianshu.com/p/1ebf7333808d <简书社区 — Timhbw> ...

  4. [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

    A.概述      在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能      1.按钮点击后,显示为“已下载”,并且不 ...

  5. [置顶] IOS 基础入门教程

    IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...

  6. iOS 基础:Frames、Bounds 和 CGGeometry

    https://segmentfault.com/a/1190000004695617 原文:<iOS Fundamentals: Frames, Bounds, and CGGeometry& ...

  7. iOS 基础入门--Bull' Eye 小游戏 

      说明   Bull's Eye小游戏是http://www.raywenderlich.com/store/ios-apprentice里非常酷的入门demo 跟着该教程一步步做下来便有了 ...

  8. iOS 基础函数解析 - Foundation Functions Reference

    iOS 基础函数解析 - Foundation Functions Reference 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名- ...

  9. 动画 iOS基础

    动画 iOS基础 1.     basic animation  基础动画 一个基础动画 在一个开始值和一个结束值之间运动   messageLabel.alpha=0.0; [UIView  ani ...

随机推荐

  1. 开发并调试 Mail Add-in

    开发并调试 Mail Add-in (mail app for Outlook) 准备工作 如果你的邮箱搭建在 Exchange Server 上,则可以创建邮件应用程序(Mail Add-in)来扩 ...

  2. Windows Server 2008 网管数据采集 努力做“日拱一卒“

    Windows Server 2008R2系统管理[刘道军主讲MCITP课程] http://edu.51cto.com/course/course_id-510.html Windows Serve ...

  3. Android 内存管理 &amp;Memory Leak &amp; OOM 分析

    1.Android 流程管理&内存 Android主要应用在嵌入式设备其中.而嵌入式设备因为一些众所周知的条件限制,通常都不会有非常高的配置,特别是内存是比較有限的. 假设我们编写的代 码其中 ...

  4. hdu 质方数

    Problem Description   小明天生对数字比较敏感,3岁的时候就能背诵圆周率一百位. 现在,小明慢慢长大了,但依然很喜欢数字,最近,他迷上了质数和平方数,并且自己把质数的平方命名为“质 ...

  5. C++拷贝构造函数具体解释

    一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是非常easy的,比如: int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各 ...

  6. Android微信道共用,没有反应

    研究2日,寻找良好的比较完整的文章一天.发送链接:http://www.apkbus.com/android-138326-1-1.html 然而,按照上面的教程一步一步做.结果点击分享或无反应. 出 ...

  7. CSharp设计模式读书笔记(21):状态模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

    模式角色与结构: 示例代码:(本示例在具体状态类中实现状态切换,也可以在环境类中实现状态切换.状态模式一定程度上违背开闭原则) using System; using System.Collectio ...

  8. shell的定义

    shell一些符号区别对待不同的定义.主要的定义3途径: (1)单引號 (2)双引號 (3)反引號 我们最经常使用的就是双引號和单引號.对于这2个符号,用$变量能够非常清楚的说明它们的差别,例如以下: ...

  9. cocos2d-x多分辨率和随后的自适应CCListView的bug修复

    cocos2d-x多分辨率自适配及因此导致的CCListView的bug修复 cocos2d-x是一款众所周知的跨平台的游戏开发引擎.因为其跨平台的特性.多分辨率支持也自然就有其需求. 因此.在某一次 ...

  10. 赵雅智_Android编码规范

    凝视 导入mycodetemplates.xml统一凝视样式 须要加凝视的地方 类凝视(必加) 方法凝视(必加) 块凝视主要是数据结构和算法的描写叙述(必加) 类成员变量和常量凝视(选择性加入) 单行 ...