NSURLSession一共有四种Delegate (文后附表有Session和SessionTask分类表格)

NSURLSessionDelegate, NSURLSessionDownloadDelegate,

NSURLSessionTaskDelegate, NSURLSessionDataDelegate

NSURLSession设置Delegate的时候只设置一个delegate,就已经代表了四个delegate全部被设置了。有时候一些delegate不会被触发的原因在于这四种delegate是针对不同的URLSession类型和URLSessionTask类型来进行响应的,也就是说不同的类型只会触发这些delegate中的一部分,而不是触发所有的delegate

举例说明如下

1.触发NSURLSessionDataDelegate

使用函数dataTask来接收数据

-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data

则NSURLSession部分的代码如下

1     NSURLSessionConfiguration* ephConfiguration=[NSURLSessionConfiguration defaultSessionConfiguration];
2     NSURLSession* session=[NSURLSession sessionWithConfiguration:ephConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
3     NSURL* url=[NSURL URLWithString:@"http://www.example.com/external_links/01.png"];
4      NSURLSessionDataTask* dataTask=[session dataTaskWithURL:url];
5     [dataTask resume];

2.触发NSURLSessionDownloadDelegate

使用函数downloadTask来接受数据

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location

则NSURLSession部分的代码如下

1     NSURLSessionConfiguration* ephConfiguration=[NSURLSessionConfiguration defaultSessionConfiguration];
2     NSURLSession* session=[NSURLSession sessionWithConfiguration:ephConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
3     NSURL* url=[NSURL URLWithString:@"http://www.example.com/external_links/01.png"];
4      NSURLSessionDownloadTask* dataTask=[session downloadTaskWithURL:url];
5     [dataTask resume];

这两段代码的主要区别在于NSURLSessionTask的类型的不同,造成了不同的Delegate被触发

附表

URLSession的分类

Session类型   特点解释
Default Session 可以缓存到Disk,可以Pause
Ephemeral Session 短暂的进程,存储在RAM
Background Session               可以Background Running,其他特点类似Default Session

SessionTask的分类

SessionTask类型   特点解释
data Tasks                             小文件的交互                                                            
download Tasks 下载类型
upload Tasks              上传类型

转载于:https://www.cnblogs.com/cnyin/p/4812490.html

iOS网络传输Delegate不被触发的本质原因相关推荐

  1. iOS 网络传输数据安全以及常用的加密算法使用

    我们常说的数据安全:主要分为两种,数据本身的安全和数据防护安全. 数据本身的安全包括数据保密,数据完整性验证,数据双向认证等. 数据防护安全包括磁盘阵列,数据备份,异地容灾等. App安全问题主要包括 ...

  2. iOS网络经典知识点收录整理(OSI分层协议作用介绍和传输全过程)

    重要知识点目录 从URL输入到网页显示的全过程解析 TCP底层三次握手解析 OSI分层知识点记录介绍 1.链路层 2.网络层  ARP IPv4 IPv6 ICMP(异常协议) 3.传输层 4.应用层 ...

  3. iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理

    本章内容 ●    iOS应用中的网络错误源 ●    检测网络的可达性 ●    错误处理的经验法则 ●    处理网络错误的设计模式 到目前为止,我们所介绍的iPhone与其他系统的网络交互都是基 ...

  4. iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求

    原文地址:https://github.com/ChenYilong/ParseSourceCodeStudy/blob/master/02_Parse的网络缓存与离线存储/iOS网络缓存扫盲篇.md ...

  5. iOS网络编程-iCloud键值数据存储编程实例

    iCloud键值数据存储设计 iCloud键值数据存储编程实例,画面中有两个开关控件,左图是设备1点击"设置iCloud数据"按钮,将控件状态保存到iCloud服务器.右图是设备2 ...

  6. Android 实现无网络传输文件(2)

    在我的上一篇文章:Android 实现无网络传输文件,我介绍了通过 Wifi Direct(Wifi 直连)实现 Android 设备之间进行文件传输的方法,可以在无移动网络的情况下实现点对点的文件传 ...

  7. iOS网络开发中的同步、异步和请求队列

    在iOS网络编程中,我们经常会遇到线程的同步和异步问题,同时为了对异步请求更加精准丰富的控制,我们还常常在iOS中使用请求队列,下面就来谈谈iOS开发中同步.异步以及请求队列的使用方法. 1. 同步意 ...

  8. iOS网络编程开发—HTTP协议

    iOS网络编程开发-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  9. 由STGW下载慢问题引发的网络传输学习之旅

    导语:本文分享了笔者现网遇到的一个文件下载慢的问题.最开始尝试过很多办法,包括域名解析,网络链路分析,AB环境测试,网络抓包等,但依然找不到原因.然后利用网络命令和报文得到的蛛丝马迹,结合内核网络协议 ...

最新文章

  1. 五分钟搭建一个基于BERT的NER模型
  2. Centos修改系统语言
  3. Noriben沙箱:分分钟搞定恶意软件
  4. Fragment详解之四——管理Fragment(2)
  5. 青春环游记 | 雪中悍刀行之卡尔曼的鱼【回顾 2021,展望 2022】
  6. __int64 与long long 的区别
  7. 查询进程打开的文件(转)
  8. 一般通话记录能保存多少条_鸡蛋放冰箱,能保存多少天?正确保存方法是什么?...
  9. 【TensorFlow】TensorFlow函数精讲之tf.clip_by_value()
  10. 5G汽车联盟与欧洲汽车电信联盟签署合作谅解备忘录
  11. html如何隐藏盒子的边框线,用DIV和CSS做一个实线边框的红色盒子
  12. vue视频保存不下来_女子直播吃章鱼被“反杀”!拔不下来了,视频超痛……
  13. 高程拟合MATLAB二次曲面,GPS高程二次曲面拟合及其程序
  14. python 基础学习(小甲鱼)
  15. EasyAPI基于电子发票API接口二维码小票对接方案
  16. 遥感的几何校正、正射校正、辐射校正
  17. 计算几何2- 判断两线段是否相交
  18. Android Studio出现Execution failed for task ‘:app:processDebugMainManifest
  19. Typescript 史上最强学习入门文章 ( 2w 字)
  20. 进程调度算法相关习题

热门文章

  1. python手机版安卓-当python遇到Android手机 那么,万物皆可盘
  2. 如何用python画出中国地图-用Python画一个中国地图
  3. python教程书籍-大牛推荐的10本学习 Python 的好书
  4. python第三方库numpy-Python中的第三方库——Numpy
  5. python读数据-如何用 Python 读取数据?
  6. python使用什么注释语句和运算-Python代码注释的用法和意义
  7. 西安python培训班多少钱-西安python培训多少钱?
  8. python好学吗一般要学多久-转行学Python开发难吗,月薪过万需要多久
  9. 9.9学python靠谱吗-宅家亲测:9.9的python体验课,到底值不值?
  10. python拼音怎么写-Python 中拼音库 PyPinyin 的用法