Jak natychmiast wymusić anulowanie NSOperation za pomocą AFNetworking?

Używam AFNetworking w mojej aplikacji i próbuję zaimplementować funkcję „Tap To Cancel” w moim HUD-ie postępu. Mam klasę singleton, która zarządza wszystkimi żądaniami HTTP. Jeśli HUD postępu jest stuknięty, dzwonię:

[[[HTTPRequestSingleton sharedClient] operationQueue] cancelAllOperations];

Ale to nie „anuluje” operacji, jakiej potrzebuję. Czytałem na tematNSOperationQueue docs i natknąłem się na to:

Anulowanie obiektu operacji pozostawia obiekt w kolejce, ale powiadamia obiekt, że powinien przerwać swoje zadanie tak szybko, jak to możliwe. W przypadku aktualnie wykonywanych operacji oznacza to, że kod pracy obiektu operacji musi sprawdzać stan anulowania, zatrzymać działanie i oznaczyć się jako zakończony. W przypadku operacji oczekujących w kolejce, ale jeszcze nie wykonanych, kolejka musi nadal wywoływać metodę uruchomienia obiektu operacji, aby mogła przetworzyć zdarzenie anulowania i oznaczyć się jako zakończone.

A jeśli chodzi ocancelAllOperations metoda:

Ta metoda wysyła komunikat anulowania do wszystkich operacji aktualnie w kolejce. Operacje w kolejce są anulowane przed rozpoczęciem wykonywania. Jeśli operacja jest już wykonywana, do tej operacji należy rozpoznanie anulowania i zatrzymanie tego, co robi.

Wydaje się, że moim problemem jest operacja, która już się wykonuje, którą chcę natychmiast anulować. W AFNetworking, jak mogę powiadomić operację, że powinna anulować i odrzucić wszystkie informacje o żądaniu?

Kod używany do działania

AFJSONRequestOperation *loginOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    //operation was successful

    if (loginOperation.isCancelled)
    {
        //can't do this. variable 'loginOperation' is uninitialized when captured by block      
    }

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {

    //operation failed

}];

questionAnswers(2)

yourAnswerToTheQuestion