cocoa:使用ASIHttpRequest和ASINetwork下载

时间:2012-09-24 14:46:43

标签: cocoa download asihttprequest nsoperationqueue

我正在使用cocoa实现一个下载管理器。用户可以添加多个下载请求,请求管理器将在面板中显示请求的进度。我遇到了队列中请求暂停/恢复的问题。

为简单起见,假设最大并发操作数为1,我添加了几个请求,顺序为:1,2,3,4,5。如果没有中断,请求将按顺序从1到5下载。假设我暂停请求1,请求2应继续下载。在此期间,我恢复请求1.因此,在请求2完成后,我希望请求1可以在请求3之前继续。

这里的问题是:对于我暂停时的单个请求,请求实际上已被取消。当我恢复请求时,新请求被初始化然后启动。在操作队列中,如果请求暂停,我现在发送了[self cancel],以便可以启动下一个请求。但是,我不知道如果恢复怎么办。取消的请求无法再次添加到队列中。如果我创建了一个新的并将其添加到队列中,我怎么能像以前一样承诺优先级?

请提供有关如何操作的提示。

感谢

1 个答案:

答案 0 :(得分:0)

目前我自己使用以下方法制作解决方案:

  1. 制作从ASIHttpRequest;
  2. 继承的自定义请求
  3. 使NAMutableArray包含所有请求;
  4. 如果添加了一个请求,则枚举数组以查看是否正在执行最大请求。 如果没有,请在自己的队列中启动请求。如果超过最大值,只需将请求添加到数组,并将其状态设置为waiting;
  5. 如果一个请求正在完成或失败,则枚举数组以通过添加状态为waiting的时间来查看位于第一个位置的请求;