在相同操作的故障块中创建NSOperation的副本

时间:2013-12-14 13:54:57

标签: afnetworking nsoperation nsoperationqueue

当前正在执行的NSOperation完成执行时,有没有办法启动相同的NSOperation。

我正在尝试使用AFDownloadRequestOperation(AFHTTPRequestOperation的子类)下载一组文件,并将maxConcurrency设置为1.如果由于服务器的间歇性可用而导致下载失败,则代码会到达失败块。然后,我想将此当前操作的副本添加到操作队列中。

1 个答案:

答案 0 :(得分:0)

是的,您可以通过执行以下操作进行复制:

AFHTTPRequestOperation *newOperation = [oldOperation copy];

请注意文档中的这些警告:

  
      
  • -copy-copyWithZone:返回原始NSURLRequest的新操作。所以而不是精确的副本   在该特定时刻的操作,复制机制返回一个   全新的实例,可用于重试操作。
  •   
  • 操作的副本不包含原始文件的outputStream
  •   
  • 操作副本不包含completionBlock,因为它通常会强烈捕获对self的引用,否则会引用{{1}}   指向原始操作的不直观的副作用   复制时。
  •   

最重要的一点是,您需要在复制后重置完成块。