从ASINetWorkQueue中删除所有请求

时间:2010-09-11 13:30:14

标签: iphone asihttprequest nsoperationqueue

有人知道以持久方式从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];  
}

1 个答案:

答案 0 :(得分:2)

我能看到的两个明显的选择是:

[queue cancelAllOperations];

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

[request cancel];

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

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

如果所有其他方法都失败了,那么释放然后重新创建队列应该删除所有内容。

<强>更新

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

苹果文档在这里:

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