简单易用的iOS下载器--XLDownLoader

156 阅读2分钟

很多iOS应用中都需要下载数据,并对这些下载的过程和结果进行管理,这也是我曾经在工作中遇到的,这也使我在实现这个下载器的过程中少踩了许多坑,所以才有了这个下载器的出现。

在很多很多的下载器当中都是使用NSOperation来封装下载任务并加到NSOperationQueue中,由NSOperationQueue来管理这些下载任务,并监控NSOperation中的executing, finished, cancelled等任务状态,可是在我的测试当中,NSOperation中的状态在某些时候跟我们所预测要达到的效果是不一致的,所以在UI界面上就会出现不可预测的结果,这也是DownLoader这个下载器弃用NSOperation的原因。

关于XLDownLoader中的一些介绍:

提供什么:

  • 基于NSURLSession、支持多任务、断点续传支持

  • 自定义并发线程数按

  • 顺序下载文件

  • 支持暂停全部、删除全部、恢复全部功能

  • 支持单个任务的暂停,取消,删除功能

XLDownLoader使用:

给定一个model并指定存放下载地址的属性名称

[[XLDownLoaderManager sharedManager]loadWithModel:model 
propertyName:@"url" 
progress:^(NSInteger index) {}
completed:^(NSError *error) {}];

给定一个装有多个model的数组并指定存放下载地址的属性名称

[[XLDownLoaderManager sharedManager]loadWithArray:array 
propertyName:@"url" progress:^(NSInteger index) {}
completed:^(NSError *error) {}];

给定一个装有多个XLDownLoaderItem的数组

[[XLDownLoaderManager sharedManager]loadWithItems:array
progress:^(NSInteger index) {}
completed:^(NSError *error) {}];

暂停全部

suspendAll

恢复全部

resumeAll

移除完成队列中所有任务

removeAllFinishedItem

移除完成队列中指定任务

- (BOOL)removeFinishedItem:(XLDownLoaderItem *)item
- (void)removeWithFinishedArray:(NSArray<XLDownLoaderItem *> *)array

移除下载队列中指定任务

- (BOOL)removeDownLoaderItem:(XLDownLoaderItem *)item
- (void)removeWithDownLoaderArray:(NSArray<XLDownLoaderItem *> *)array

暂停下载队列中指定任务

- (void)suspendWithItem:(XLDownLoaderItem *)item

恢复下载队列中指定任务

- (void)resumeWithItem:(XLDownLoaderItem *)item

项目主页: github.com/hlc0000/XLD…

希望各位小伙伴多多提出宝贵意见,交流学习~