代码之家  ›  专栏  ›  技术社区  ›  hennes

从ASINetWorkQueue中删除所有请求

  •  1
  • hennes  · 技术社区  · 15 年前

    - (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 回复  |  直到 15 年前
        1
  •  2
  •   JosephH    15 年前

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

    [queue cancelAllOperations];
    

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

    [request cancel];
    

    [queue reset]; 也应该有效-也许你能解释清楚当你尝试使用它时会发生什么?

    更新

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

    苹果文档如下:

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