我有一堆NSOperations添加到了NSOperationQueue.操作队列maxConcurrentOperationCount设置为1,以便NSOperations一个接一个地运行.
现在,在completionBlock一个NSOperation我想取消所有未决NSOperations调用cancelAllOperations的NSOperationQueue.
这样做安全吗?我可以确定start只有completionBlock在前一个操作完全执行后才调用下一个操作的方法吗?或者执行completionBlock上一个操作和当前操作的任务同时运行?
我之所以要问:我使用AFNetworking来执行一批AFHTTPRequestOperations并且只有在批量的所有先前请求都成功时才执行一个请求.
我需要执行一系列顺序运行的服务器调用,并且只有在所有先前的请求都成功后才能执行一个请求.
所以,我的想法是AFHTTPRequestOperation为每个请求创建一个并使用它[myAFHTTPClient enqueueBatchOfHTTPRequestOperations:]来解雇它们.
我可以通过调用顺序运行它们
[myAFHTTPClient.operationQueue setMaxConcurrentOperationCount:1]
但是,如果以前的操作成功,我怎样才能确保剩余的操作能够运行?
我试图为操作失败时completionBlock调用的每个操作创建一个[myAFHTTPClient cancelAllOperations],但是queueBlock和队列中的下一个操作同时运行,因此下一个请求可能在被取消之前已经发送到服务器.我该怎么办?