Удалить все запросы из ASINetWorkQueue - PullRequest
1 голос
/ 11 сентября 2010

Кто-нибудь знает способ постоянного удаления запросов из 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 Ответ

2 голосов
/ 11 сентября 2010

Я вижу два очевидных варианта:

[queue cancelAllOperations];

или, если вы хотите больше контроля:

[request cancel];

для каждого запроса, который вы хотите «удалить» (это технически не удаляет их, но может иметь достаточно близкий эффект для ваших целей).

Хотя, я думаю, [queue reset]; также должно работать - может быть, вы можете точно объяснить, что происходит, когда вы пытаетесь его использовать?

Если ничего не помогает, освобождение и повторное создание очереди должно удалить все.

Обновление

Для дальнейшего объяснения, я не думаю, что на самом деле возможно удалить элементы из NSOperationQueue, только чтобы отменить их. (ASINetworkQueue является подклассом NSOperationQueue.)

Документы по яблоку здесь:

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

...