文章目录

  • block下载任务
  • 下载代理方法

block下载任务

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{//会话NSURLSession *session=[NSURLSession sharedSession];//2.根据会话创建任务NSURLSessionDownloadTask *downloadTask= [session downloadTaskWithURL:[NSURL URLWithString:IMAGE_URL] completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {//location是下载的本地地址NSLog(@"location=%@",location);UIImage *image=[UIImage imageWithData:[NSData dataWithContentsOfURL:location]];dispatch_async(dispatch_get_main_queue(), ^{self.imagview.image=image;});}];//3.启动任务[downloadTask resume];
}

下载代理方法

#import "ViewController.h"
#define MYURL @"http://vjs.zencdn.net/v/oceans.mp4"@interface ViewController ()<NSURLSessionDownloadDelegate>
@property (nonatomic,strong)NSURLSessionDownloadTask *task;
@property(nonatomic,strong) NSData *data;
@property(nonatomic,strong) NSURLSession *session;
@end@implementation ViewController//创建会话
-(NSURLSession *)session{if(!_session){_session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];}return _session;
}
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)start:(UIButton *)sender {//根据会话创建下载任务self.task=[self.session downloadTaskWithURL:[NSURL URLWithString:MYURL]];//启动任务[self.task resume];
}
- (IBAction)pause:(UIButton *)sender {// [self.task suspend];//可以恢复任务//cancelByProducingResumeData任务无法恢复,如果还是想能恢复继续下载,则记录下当前下载的数据[self.task cancelByProducingResumeData:^(NSData * _Nullable resumeData) {//resumeData表示当前下载了多少数据self.data=resumeData;}];
}
- (IBAction)resume:(UIButton *)sender {// [self.task resume];//对应cancelByProducingResumeData的在暂停的基础上继续下载self.task=[self.session downloadTaskWithResumeData:self.data];[self.task resume];
}
#pragma mark -协议方法
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{}
//下载进度
/*bytesWritten 当前次下载的数据大小totalBytesWritten 总共下载了多少数据totalBytesExceptedToWrite*/
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{NSLog(@"--%f",1.0*totalBytesWritten/totalBytesExpectedToWrite);}
//恢复任务时调用的方法
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes{}
//下载之后 文件所在位置
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{//location文件下载的路径
}
@end

IOS网络基础学习三:NSURLSession的Download下载任务和代理方法相关推荐

  1. k8s网络基础学习-Calico网络插件

    第十课 k8s网络基础学习-Calico网络插件 tags: k8s网络 calico proxy arp bgp full mesh bgp RR 文章目录 第十课 k8s网络基础学习-Calico ...

  2. 网络基础学习:ip地址的知识

    网络基础学习:ip地址的知识 IP地址是什么? 如何查询计算机ip ip分为几类 IPv4和IPv6 IPv4和IPv6的通信 IP地址是什么? IP地址是指用于标识在网络上的设备或节点的一组数字,它 ...

  3. 大数据基础学习三:Ubuntu下安装VMware Tools超详细步骤及需要注意的问题(以ubuntu-18.04.3、Mware Workstation 15.1.0 Pro为例)

    大数据基础学习三:Ubuntu下安装VMware Tools超详细步骤及需要注意的问题 (以ubuntu-18.04.3.Mware Workstation 15.1.0 Pro for Window ...

  4. 第四课 k8s网络基础学习-DNS和DHCP学习

    第四课 k8s网络基础学习-DNS和DHCP学习 tags: k8s网络 DNS DHCP 文章目录 第四课 k8s网络基础学习-DNS和DHCP学习 第一节 DNS介绍 第二节 DNS的linux使 ...

  5. 第八课 k8s网络基础学习-VxLAN基础

    第八课 k8s网络基础学习-VxLAN基础 tags: k8s网络 eNSP wireshark VxLAN 文章目录 第八课 k8s网络基础学习-VxLAN基础 第一节 VxLAN 1.1 VxLA ...

  6. Linux 网络基础学习

    Linux 网络基础知识 网络的基础知识包括: TCP/IP , Network IP, Netmask IP , Broadcast IP,Gateway, DNS IP等等 OSI的网络七层协议 ...

  7. Linux运维之道之网络基础学习1.3

    网络基础1.3 数据链路层解析: 数据链路层: 位于物理层与网络层之间: 数据链路层的功能: --数据链路的建立,维护,拆除 --帧包装,帧传输,帧同步 --帧的差错恢复 --流量控制 ------- ...

  8. 《网络基础学习之一》计算机网络分类

    一.计算机网络的组成及分类 计算机网络通俗地讲就是由多台计算机(或其它计算机网络设备)通过传输介质和软件物理(或逻辑)连接在一起组成的.总的来说计算机网络的组成基本上包括:计算机.网络操作系统.传输介 ...

  9. Linux运维之道之网络基础学习1.0

    网络基础1.0 计算机网络: 硬件方面:通过线缆将网络设备和计算机连接起来 软件方面:操作系统,应用软件,应用程序通过通信线路互连,实现资源共享,信息传递. 计算机网络的功能: 数据通信,资源共享,增 ...

最新文章

  1. C++ STL set(集合)
  2. 【上海】关于云计算,你想学习哪些知识,快让我来满足你
  3. JDK自带内存及线程分析工具
  4. 20年薪水的经典忠告
  5. 从零开始刷Leetcode——数组(643.665.674)
  6. vlan网络隔离实验
  7. Android应用启动画面实现
  8. java导出excel锁定状态_Java设置excel单元格锁定状态 | 学步园
  9. cf进入服务器未响应,win7系统玩cf未响应的解决方法
  10. monkey命令——压力测试——转载参考01
  11. deepin提取DSDT
  12. ICP备案不等于ICP许可证
  13. APICLOUD实现沉浸式导航栏在Android和ios上的兼容
  14. Android国外学习资源汇总
  15. 使用poi来导入具有合并单元格的excel表格
  16. 555-大数据查重-位图算法
  17. JavaScript实现网页关灯效果
  18. python爬虫和定位_Python网络爬虫实战,照片定位与B站弹幕!
  19. 精品软件推荐-罗塞达石碑(Rosetta Stone)V5.037 语言学习Mac中文版
  20. 【原创】无法在 ADRE 上打开 NTDS 服务,错误 0x5 “拒绝访问。” AD站点无法复制...

热门文章

  1. js使原元素获取焦点以及移除焦点的方法
  2. winform鼠标悬停在空间上显示提示tip
  3. 【微服务】矩阵式客户关系管理设计、实现方案
  4. HP-UX双机-安装ORACLE10g
  5. 五笔编码查询工具(念青字库) 新增快捷键 | #hta #五笔 #javascript
  6. C to the start....start to C
  7. 安徽专业计算机应用能力考试,安徽省计算机应用能力考试时间安排出炉
  8. Maven搭建多子项目工程
  9. 老毛桃U盘工具,自由更换系统,方便快捷,全面兼容新旧配置,自制引导盘和光驱无法更新系统,老毛桃引导盘用户可以自由替换系统,支持GHOST与原版系统安装,方便快捷,自动安装。支持双显卡笔记本的引导进PE
  10. 理财小工具(二)贷款计算器