很多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…
希望各位小伙伴多多提出宝贵意见,交流学习~