Отмена одного (или нескольких) определенных запросов ASIHTTP в ASINetworkQueue - PullRequest
2 голосов
/ 30 января 2011

В моем приложении для iPhone / iPad я обрабатываю все сетевые и веб-API-запросы через «APIManager» (синглтон, созданный в AppDelegate).

В настоящее время APIManager содержит только один единственный ASINetworkQueue, к которому добавляются и выполняются APIRequests (подкласс ASIHTTPRequest). В userInfo каждого APIRequest добавляется некоторая дополнительная информация для обработки запроса (например, должен ли ответ анализироваться в Базовых данных - и если да, то какой объект - или нет).

Когда пользователь перемещается из одного представления (ViewA) в другое (ViewX), я хотел бы иметь возможность отменить все запросы, которые ViewA запросил APIManager, в то время как другие могут продолжить.

Существуют ли какие-либо функции для поиска определенного запроса в ASINetworkQueue (или NSOperationQueue) и отправки ему сообщения об отмене? Может быть, используя параметры, добавленные в userInfo запроса?

Заранее спасибо!

1 Ответ

3 голосов
/ 30 января 2011

[queue operations] вернет NSArray элементов в очереди, которые вы можете затем перебрать и вызвать 'cancel' для любого, который вам нравится.

Что-то вроде:

for (ASIHTTPRequest *req in [queue operations])
{
    if (shouldCancel(req))
        [req cancel];
}
...