iOS基础 - NSURLSession
使用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的更多相关文章
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- iOS 基础日记-修饰符
今晚随便温习了一下iOS 基础关于修饰符这块的东西,下面简单的来描述一下,其中有的也是在网络学习到的: strong与weak是由ARC新引入的对象变量属性 ARC的解释:ARC引入了新的对象的生命周 ...
- iOS基础问答面试
<简书社区 — Timhbw>iOS基础问答面试题连载(一)-附答案:http://www.jianshu.com/p/1ebf7333808d <简书社区 — Timhbw> ...
- [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)
A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不 ...
- [置顶] IOS 基础入门教程
IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...
- iOS 基础:Frames、Bounds 和 CGGeometry
https://segmentfault.com/a/1190000004695617 原文:<iOS Fundamentals: Frames, Bounds, and CGGeometry& ...
- iOS 基础入门--Bull' Eye 小游戏
说明 Bull's Eye小游戏是http://www.raywenderlich.com/store/ios-apprentice里非常酷的入门demo 跟着该教程一步步做下来便有了 ...
- iOS 基础函数解析 - Foundation Functions Reference
iOS 基础函数解析 - Foundation Functions Reference 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名- ...
- 动画 iOS基础
动画 iOS基础 1. basic animation 基础动画 一个基础动画 在一个开始值和一个结束值之间运动 messageLabel.alpha=0.0; [UIView ani ...
随机推荐
- obj-c编程04:类的继承
这第4篇内容比較少,主要说的是obj-c中的类的继承,须要说明的是我仅仅是写了继承中最简单的形式,假设所有展开来说,那就多了去了!关键是如今肚子里还没装够墨水,没法展开啊! 以下的代码中,我们写了2个 ...
- C++定义自己的命名空间和头文件
下面的例子演示如何使用一个简单的演示空间和自己的头文件定义.码如下面: compare.h: namespace compare{ double max(const double* data,int ...
- 大数据系列修炼-Scala课程01
简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步,听行业前辈说毕业生刚 ...
- Sort函数的相关知识
sort与stable_sort 需包含头文件:#include <algorithm>因为它是库函数 这两个函数的原理都是快速排序,时间复杂度在所有排序中最低,为O(nlog2n) ...
- 未能加载文件或程序集 Newtonsoft.Json, Version=4.5.0.0 的报错,解决方法
使用httpclient测试webapi的时候客户端报错: {"未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, P ...
- 使用Heartbeat实现双机热备
使用Heartbeat实现"双机热备"或者称为"双机互备"heartbeat的工作原理:heartbeat最核心的包含两个部分,心跳监測部分和资源接管部分,心跳 ...
- hdu Lowest Bit
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1196 大水题 lowbit 的应用 (可以取出一个数二进制中的最后一个1.树状数组常用, ...
- PHP连接Access数据库代码
使用php的odbc函数,不创建数据源. $connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath(" ...
- oracle处理节点之间的父子关系
通常当与树的结构之间的关系处理,这是一个很复杂的事情,我们可以通过程序代码去逐层遍历父或子节点,这样做的缺点是很明显,效率不高,操作复杂性是比较大的.而当我们使用Oracle当数据库,我们可以有一个简 ...
- ionic入门之色彩、图标和边距和界面组件:列表
色彩 ionic定义了九种前景/背景/边框的色彩样式,: 可以在任何元素上使用这些样式设置前景和背景颜色: <any class="positive-bg energized" ...