2011-01-30 1 views
2

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

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

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

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

Заранее благодарен!

ответ

3

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

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

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

Только то, что я искал! Я попробую это позже, спасибо! –