IOS网络基础学习三:NSURLSession的Download下载任务和代理方法
文章目录
- 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下载任务和代理方法相关推荐
- k8s网络基础学习-Calico网络插件
第十课 k8s网络基础学习-Calico网络插件 tags: k8s网络 calico proxy arp bgp full mesh bgp RR 文章目录 第十课 k8s网络基础学习-Calico ...
- 网络基础学习:ip地址的知识
网络基础学习:ip地址的知识 IP地址是什么? 如何查询计算机ip ip分为几类 IPv4和IPv6 IPv4和IPv6的通信 IP地址是什么? IP地址是指用于标识在网络上的设备或节点的一组数字,它 ...
- 大数据基础学习三: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 ...
- 第四课 k8s网络基础学习-DNS和DHCP学习
第四课 k8s网络基础学习-DNS和DHCP学习 tags: k8s网络 DNS DHCP 文章目录 第四课 k8s网络基础学习-DNS和DHCP学习 第一节 DNS介绍 第二节 DNS的linux使 ...
- 第八课 k8s网络基础学习-VxLAN基础
第八课 k8s网络基础学习-VxLAN基础 tags: k8s网络 eNSP wireshark VxLAN 文章目录 第八课 k8s网络基础学习-VxLAN基础 第一节 VxLAN 1.1 VxLA ...
- Linux 网络基础学习
Linux 网络基础知识 网络的基础知识包括: TCP/IP , Network IP, Netmask IP , Broadcast IP,Gateway, DNS IP等等 OSI的网络七层协议 ...
- Linux运维之道之网络基础学习1.3
网络基础1.3 数据链路层解析: 数据链路层: 位于物理层与网络层之间: 数据链路层的功能: --数据链路的建立,维护,拆除 --帧包装,帧传输,帧同步 --帧的差错恢复 --流量控制 ------- ...
- 《网络基础学习之一》计算机网络分类
一.计算机网络的组成及分类 计算机网络通俗地讲就是由多台计算机(或其它计算机网络设备)通过传输介质和软件物理(或逻辑)连接在一起组成的.总的来说计算机网络的组成基本上包括:计算机.网络操作系统.传输介 ...
- Linux运维之道之网络基础学习1.0
网络基础1.0 计算机网络: 硬件方面:通过线缆将网络设备和计算机连接起来 软件方面:操作系统,应用软件,应用程序通过通信线路互连,实现资源共享,信息传递. 计算机网络的功能: 数据通信,资源共享,增 ...
最新文章
- C++ STL set(集合)
- 【上海】关于云计算,你想学习哪些知识,快让我来满足你
- JDK自带内存及线程分析工具
- 20年薪水的经典忠告
- 从零开始刷Leetcode——数组(643.665.674)
- vlan网络隔离实验
- Android应用启动画面实现
- java导出excel锁定状态_Java设置excel单元格锁定状态 | 学步园
- cf进入服务器未响应,win7系统玩cf未响应的解决方法
- monkey命令——压力测试——转载参考01
- deepin提取DSDT
- ICP备案不等于ICP许可证
- APICLOUD实现沉浸式导航栏在Android和ios上的兼容
- Android国外学习资源汇总
- 使用poi来导入具有合并单元格的excel表格
- 555-大数据查重-位图算法
- JavaScript实现网页关灯效果
- python爬虫和定位_Python网络爬虫实战,照片定位与B站弹幕!
- 精品软件推荐-罗塞达石碑(Rosetta Stone)V5.037 语言学习Mac中文版
- 【原创】无法在 ADRE 上打开 NTDS 服务,错误 0x5 “拒绝访问。” AD站点无法复制...
热门文章
- js使原元素获取焦点以及移除焦点的方法
- winform鼠标悬停在空间上显示提示tip
- 【微服务】矩阵式客户关系管理设计、实现方案
- HP-UX双机-安装ORACLE10g
- 五笔编码查询工具(念青字库) 新增快捷键 | #hta #五笔 #javascript
- C to the start....start to C
- 安徽专业计算机应用能力考试,安徽省计算机应用能力考试时间安排出炉
- Maven搭建多子项目工程
- 老毛桃U盘工具,自由更换系统,方便快捷,全面兼容新旧配置,自制引导盘和光驱无法更新系统,老毛桃引导盘用户可以自由替换系统,支持GHOST与原版系统安装,方便快捷,自动安装。支持双显卡笔记本的引导进PE
- 理财小工具(二)贷款计算器