1

有人知道以持久方式从 ASINetworkQueue 中删除请求的方法吗?重置功能似乎没有完成这项工作。我想要做的是以下

- (void)fillAndRunQueue:(ASINetworkQueue*)queue requests:(NSArray*)requests {  
    for (ASIHTTPRequest* request in requests) {  
        if ([request check]) { // Valid request => add it to the queue    
            [queue addOperation:request];  
        } else { // Invalid request => cancel immediatelly  
            // HOW TO REMOVE ALL PREVIOUS REQUESTS FROM THE QUEUE??  
            return;  
        }  
    }  

    [queue go];  
}
4

1 回答 1

2

我可以看到的两个明显选项是:

[queue cancelAllOperations];

或者如果您想要更多控制:

[request cancel];

对于您要“删除”的每个请求(从技术上讲,这并不是删除它们,但可能对您的目的产生足够接近的效果)。

虽然,我认为[queue reset];也应该有效 - 也许您可以准确解释当您尝试使用它时会发生什么?

如果一切都失败了,释放然后重新创建队列应该删除所有内容。

更新

为了进一步解释,我认为实际上不可能从 NSOperationQueue 中删除项目,只能取消它们。(ASINetworkQueue 是 NSOperationQueue 的子类。)

苹果文档在这里:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html

于 2010-09-11T14:21:39.947 回答