使用NSURLSessionDataTask进行大文件断点续传

因为需要做个下载项目需求,所以专门研究了下,大文件下载断点续传的功能,也比较了NSURLSession和AFN的优缺点。最终选用了NSURLSession + NSURLSessionDataTask来进行下载,由于只是demo,所以并没有对UI进行调整。默认下载位置:(~/download)

首先demo实现环境为Mac环境,但是iOS同样可以参考,两者的差别只有UI控件的不同而已。

demo中实现了的功能和技术

  1. 下载文件的开始、暂停、继续和删除。
  2. 多个文件并行异步下载
  3. 文件边下载边写入沙盒,避免下载存入内存,导致内存飙高的问题。
  4. 杀死APP后重启,可获得上次下载的内容,进行继续下载
  5. 使用归档(NSKeyedArchiver、NSKeyedUnarchiver)来对本地Model(MyDownData)进行数据归档
  6. @synchronized 保证线程安全
  7. NSOperationQueue 进行下载文件写入沙盒
  8. 一个NSURLSession 处理多个Task,每添加一个下载项目便生成一个NSURLSessionDataTask的对象

项目中结构如图:
这里写图片描述

下面是一些关键代码:
下载Task的初始化方法:新增下载和继续下载
下载的初始化方法

NSURLSessionDataTask的Delegate
这里写图片描述

model的.h和.m文件
这里写图片描述

最终效果图:
UI图

项目的github地址:前往https://github.com/goldWave/JBDownloadDemo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值