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 ...
随机推荐
- robot framework环境搭建(转)
一. robot framework环境搭建: 官网:http://robotframework.org/ 序号 安装包名 安装方法 下载地址 备注 1 python exe文件,直接双击安装 htt ...
- LESS使用介绍
使用: 在客户端使用 引入你的 .less 样式文件的时候要设置 rel 属性值为 "stylesheet/less": <link rel="stylesheet ...
- css 鼠标提示样式预览表[转]
语法: cursor : auto | all-scroll | col-resize| crosshair | default | hand | move | help | no-drop | no ...
- freemarker定义自己的标记(三)-nested说明
freemarker定义自己的标记 1.nested指令 是可选的,能够在<#macro>和</#macro>之间使用在不论什么位置和随意次数 2.演示样例说明 <#ma ...
- HDU 5281 Senior's Gun (贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5281 贪心题目,但是看看我的博客里边相关贪心的题解实在是少的可怜,这里就写出来供大家一起探讨. 题意还 ...
- 谈论Hibernate级联删除——JPA根据Hibernate实现许多级联删除CascadeType.DELETE_ORPHAN
声明: 1.这篇文章是原创.非复制或转载过来. 2.在本文中,参数都亲自做过实验证明. 3.这篇文章谈到了Hibernate配置基于注释的方法.hbm语法不可用. 不清JPA.Hibernate.EJ ...
- [译文]c# /.Net 技巧: ToDictionary() and ToList()
前言: 有两个简单好用的LINQ扩展方法 ToDictionary() 和ToList(),你可能知道或不知道,但是它的的确确可以简化查询转化为集合的任务: 简介: LINQ和延迟执行 据你所认识的L ...
- ReactJS.NET 开发
初探ReactJS.NET 开发 ReactJS通常也被称为"React",是一个刚刚在这场游戏中登场的新手.它由Facebook创建,并在2013年首次发布.Facebook ...
- POJ 3047 Bovine Birthday 日期定周求 泽勒公式
标题来源:POJ 3047 Bovine Birthday 意甲冠军:.. . 思考:式 适合于1582年(中国明朝万历十年)10月15日之后的情形 公式 w = y + y/4 + c/4 - 2* ...
- 认识ASP.NET MVC6
认识ASP.NET MVC6 这篇文章说明下如何在普通编辑器下面开发mvc6应用程序. 上篇文章: 十分钟轻松让你认识ASP.NET 5(MVC6) 首先安装mvc6的nuget包: 可以看到在pro ...