Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cocoa:使用ASIHttpRequest和ASINetwork下载_Cocoa_Download_Asihttprequest_Nsoperationqueue - Fatal编程技术网

cocoa:使用ASIHttpRequest和ASINetwork下载

cocoa:使用ASIHttpRequest和ASINetwork下载,cocoa,download,asihttprequest,nsoperationqueue,Cocoa,Download,Asihttprequest,Nsoperationqueue,我正在cocoa中实现一个下载管理器。用户可以添加几个下载请求,请求管理器将在面板中显示请求的进度。我对队列中请求的暂停/恢复遇到了问题 为简单起见,假设最大并发操作数为1,我添加了几个顺序为:1、2、3、4、5的请求。如果没有中断,请求将按顺序从1下载到5。假设我暂停请求1,请求2应该继续下载。在此期间,我恢复请求1。因此,在请求2完成之后,我希望请求1可以在请求3之前继续 这里的问题是:对于我暂停的单个请求,请求实际上已被取消。当我恢复请求时,一个新的请求被初始化,然后启动。在一个操作队列中

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

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

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

请告诉我怎么做


谢谢

目前,我使用以下方法自行制定解决方案:

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