IADownloadManager 1.0.0

IADownloadManager 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

未声明 维护。



 
依赖
EGOCache~> 2.0
AFNetworking~> 1.3
 


  • 作者
  • omar abdelhafith

iOS 下载管理器

iOS 精简下载管理器

以并行或顺序的方式下载一组文件。

它提供的内容

  • 易于集成和使用的 iOS 下载管理器。
  • 使用非常健壮的 AFNetworking 库轻松下载文件。
  • 仅处理 NSURL,您永远不需要保留下载管理器的强引用或弱引用。
  • 按顺序和并行顺序下载文件。
  • 确保每个文件(NSURL)只下载一次。
  • 在单个下载操作上可以有多个监听器/代理。
  • 下载操作按 URL 唯一,永远不会下载重复的 URL。
  • 使用 EGOCache 在内存和磁盘上缓存已下载的文件。
  • 轻松添加和删除监听器以观察下载操作。
  • 单例类以实现快速访问和最小内存开销。
  • 确保 UI 线程永远不会阻塞。
  • 代理或块回调事件。
  • 以上所有功能只需两行代码即可实现。

动机

您是否想要以并行或顺序的方式下载一组图像,例如创建一个类似于 Facebook 时序单元格视图,该视图包含多个图像的单个表单元格视图。如果您尝试创建此人,那么您将意识到某些图像必须在其他图像之前下载,即时序单元格中的第一个图像必须在同一个单元格中的第二个图像之前下载(记住,同一个单元格内有多个图像)

IADownloadManager 将帮助您以并行顺序下载图像或其他文件。IASequentialDownloadManager 将帮助您以顺序方式下载一组 URL。

先决条件

要使用下载管理器,您应具备以下功能

  • iOS 5
  • ARC

需要第三方软件(包含在项目源中)

安装

  1. 将 IADownloadManager 目录中的所有文件复制到您的项目中。
  2. 将 ThirdParty 目录中的文件复制到您的项目中
  3. 如果不确定如何添加框架,请阅读以下 SO 答案 并将 CFNetwork.frameworkSecurity.framework 添加到项目中。

如何使用

每次下载操作都通过正在下载的文件的NSURL进行识别,该NSURL将唯一并缓存。

使用代理回调并行下载文件。

开始下载操作

//Start the download operation, if the download operation is already started for this url,
//the urls will never be downloaded twice
[IADownloadManager downloadItemWithURL:url useCache:YES];

附加监听器

//Attach a listener to the url
[IADownloadManager attachListener:self toURL:url];

移除监听器

//Detach a listener to the url
[IADownloadManager detachListener:self];

代理方法

- (void)downloadManagerDidProgress:(float)progress;
- (void)downloadManagerDidFinish:(BOOL)success response:(id)response;

使用代理回调按顺序下载文件。

开始下载操作

//Start the download operation, if the download operation is already started for these urls,
//the urls will never be downloaded twice
[IASequentialDownloadManager downloadItemWithURLs:urls useCache:YES];

附加监听器

//Attach a listener to the urls
[IASequentialDownloadManager attachListener:self toURLs:urls];

移除监听器

//Detach a listener to the url
[IASequentialDownloadManager detachListener:self];

代理方法

- (void)sequentialManagerProgress:(float)progress atIndex:(int)index;
- (void)sequentialManagerDidFinish:(BOOL)success response:(id)response atIndex:(int)index;

基于块的回调。

还有一些用于通知下载事件的块,有关基于块的回调信息,请参考示例。