当前正在执行的NSOperation完成执行时,有没有办法启动相同的NSOperation。
我正在尝试使用AFDownloadRequestOperation(AFHTTPRequestOperation的子类)下载一组文件,并将maxConcurrency设置为1.如果由于服务器的间歇性可用而导致下载失败,则代码会到达失败块。然后,我想将此当前操作的副本添加到操作队列中。
答案 0 :(得分:0)
是的,您可以通过执行以下操作进行复制:
AFHTTPRequestOperation *newOperation = [oldOperation copy];
请注意文档中的这些警告:
-copy
和-copyWithZone:
返回原始NSURLRequest
的新操作。所以而不是精确的副本 在该特定时刻的操作,复制机制返回一个 全新的实例,可用于重试操作。- 操作的副本不包含原始文件的
outputStream
。- 操作副本不包含
completionBlock
,因为它通常会强烈捕获对self
的引用,否则会引用{{1}} 指向原始操作的不直观的副作用 复制时。
最重要的一点是,您需要在复制后重置完成块。