NSURLSession简介
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。
NSURLSession提供的功能:
- 通过URL将数据下载到内存
- 通过URL将数据下载到文件系统
- 将数据上传到指定URL
- 在后台完成上述功能
工作流程
如果我们需要利用NSURLSession进行数据传输我们需要:
- 创建一个NSURLSessionConfiguration,用于第二步创建NSSession时设置工作模式和网络设置:
工作模式分为:
- 一般模式(default):工作模式类似于原来的NSURLConnection,可以使用缓存的Cache,Cookie,鉴权。
- 及时模式(ephemeral):不使用缓存的Cache,Cookie,鉴权。
- 后台模式(background):在后台完成上传下载,创建Configuration对象的时候需要给一个NSString的ID用于追踪完成工作的Session是哪一个(后面会讲到)。
网络设置:参考NSURLConnection中的设置项。
1. 创建一个NSURLSession,系统提供了两个创建方法:
- sessionWithConfiguration:
- sessionWithConfiguration:delegate:delegateQueue:
第一个粒度较低就是根据刚才创建的Configuration创建一个Session,系统默认创建一个新的OperationQueue处理Session的消息。
第二个粒度比较高,可以设定回调的delegate(注意这个回调delegate会被强引用),并且可以设定delegate在哪个OperationQueue回调,如果我们将其设置为[NSOperationQueue mainQueue]就能在主线程进行回调非常的方便。
2.创建一个NSURLRequest调用刚才的NSURLSession对象提供的Task函数,创建一个NSURLSessionTask。
根据职能不同Task有三种子类:
- NSURLSessionUploadTask:上传用的Task,传完以后不会再下载返回结果;
- NSURLSessionDownloadTask:下载用的Task;
- NSURLSessionDataTask:可以上传内容,上传完成后再进行下载。
得到的Task,调用resume开始工作。
NSURLSession简介的更多相关文章
- IOS 网络浅析-(八 NSURLSession简介)
就在不长也不短的时间前,苹果正式命令咱们要向NSURLSession看,因此我们不得不认认真真的听从老大的教导,努力认知NSURLSession.其实呢,三方早已为我们解决了问题,但是呢,我们还是有必 ...
- 2016 - 1 - 24 NSURLSession (一)
一: NSURLSession简介 1.实施步骤 1.1 使用 NSURLSession对象 创建TASK ,然后执行TASK 2.TASK的类型: 二: NSURLSession的简单使用: - ( ...
- NSURLSession 网络库 - 原生系统送给我们的礼物
大家在进行iOS开发的时候一定会用到网络操作.但由于早期原生的 NSURLConnection 操作起来有很多不便,使得大家更愿意使用第三方库的解决方案,比如鼎鼎大名的 AFNetworking.正是 ...
- 自己动手写一个iOS 网络请求库的三部曲[转]
代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/BuildYourHTTPRequestLibrary 开源项目:Pitaya,适合大 ...
- IOS 网络浅析-(九 NSURLSession代理简介)
从最开始什么都不懂的小白,到到现在略知一二的小孩.我觉得不仅仅是我,大家应该都会注意到代理几乎贯穿着IOS,那么问题来了,我接下来要说什么呢,那就是.标题的内容啦.上篇网络系列的文章我介绍了NSURL ...
- IOS 网络浅析-(十 NSURLSession下载简介)
之前本来打算在写两个篇幅,但是在这片开写的时候觉得还是写一个比较好,有利于理解.NSURLSession下载是通过NSURLSession下载代理实现的,上一片也介绍了代理,之所以没有介绍下载是因为, ...
- NSURLSession学习笔记(一)简介
一.URL Session的基本概念 1.三种工作模式: 默认会话模式(default):工作模式类似于原来的NSURLConnection,使用的是基于磁盘缓存的持久化策略,使用用户keychain ...
- IOS 网络浅析-(十一 三方 AFNetworking3.0简介)
AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查.下面我就开始进入正题了. 目前使用人数最多的第三方网络库, ...
- 网络热恋之NSURLSession
// // ViewController.m // NSURLSession代理简介 #import "ViewController.h" @interface ViewContr ...
随机推荐
- function at line ### more than 60 upvalues
lua中函数的upvalues是有上限的,在luaconf.h中定义: /*@@ LUAI_MAXUPVALUES is the maximum number of upvalues per func ...
- 组合模式(composite)C++实现
组合模式 意图: 将对象组合成树形结构以表示‘部分-整体’的层次结构,所以有时候又叫做部分-整体模式.组合模式使得用户对单个对象和组合对象的使用具有一致性.,它使我们树型结构的问题中,模糊了简单元素和 ...
- How to share memory between services and user processes?
除了必要的InitializeSecurityDescriptor和SetSecurityDescriptorDacl, 内存映射文件名必须GLOBAL开头.
- HighCharts 图表插件 自定义绑定 时间轴数据
HighCharts 图表插件 自定义绑定 时间轴数据,解决时间轴自动显示数据与实际绑定数据时间不对应问题! 可能要用到的源码片段:http://code.662p.com/list/14_1.htm ...
- 00--Qt Creator 你必须要掌握的快捷操作
Qt Creator 你必须要掌握的快捷操作 多使用快捷键能显著提高工作效率,尽可能减少键盘,鼠标之间切换所浪费的时间.我这里列出个人认为非常重要必须掌握的 Qt Creator 快捷键.看你知道几个 ...
- input[type=radio]选中的样式变化
input[type=radio]:hover{ border: 2px solid #D0D0D0; } input[type=radio]:focus{ border: 2px solid #1B ...
- MongoDB 学习笔记(一):安装及简单shell操作
一.说明 1.该系列MongoDB学习笔记的学习环境采用的MongoDB版本为mongodb-win32-i386-2.4.6,操作系统为win7. 二.安装 1.新建两个目录,分别是D:\Insta ...
- MySQL数据库具体一些操作
创建数据库:CREATE DATABASE 数据库名;删除数据库:drop database <数据库名>;选择使用(需要操作的数据库):use 数据库名称;mysql数据库数据类型:类型 ...
- bzoj4282 慎二的随机数列 树状数组求LIS + 构造
首先,我们不难发现N个位置都选一定不会比少选任意几个差,所以我们就先设定我们将这N个修改机会都用上, 那么如果点 i">ii 前有sumv">sumvsumv个可修改点 ...
- ubuntu重置root密码(转载自https://zhinan.sogou.com/guide/detail/?id=316512881651)
ubuntu忘记root密码怎么办?如果普通用户忘记了怎么办 ### 第一种方法:无论你是否申请了root帐号,或是普通账号密码忘记了都没有问题的! 1. 重启ubuntu,随即长按shift进入gr ...