Я перенесла свои сетевые функции от AFNetworking
до AFNetworking v2
, а вместо AFHttpClient
я использую AFHTTPRequestOperationManager
для поддержки iOS6.
Моя проблема в том, что, хотя в AFHttpClient
существовала возможность отменить ожидающий запрос с помощью
- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path;
в AFHTTPRequestOperationManager
такого очевидного метода нет.
То, что я сделал до сих пор, - это подклассификация AFHTTPRequestOperationManager
и объявление iVar
AFHTTPRequestOperation *_currentRequest;
Когда я делаю запрос, код выглядит как
- (void)GetSomething:(NSInteger)ID success:(void (^)(MyResponse *))success failure:(void (^)(NSError *))failure
{
_currentRequest = [self GET:@"api/something" parameters:@{@"ID": [NSNumber numberWithInteger:ID]} success:^(AFHTTPRequestOperation *operation, id responseObject) {
MyResponse *response = [MyResponse responseFromDictionary:responseObject];
success(response);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(error);
}];
}
и у меня есть
- (void)cancelCurrentRequest;
которые все, что делает,
- (void)cancelCurrentRequest
{
if(_currentRequest) {
[_currentRequest cancel]; _currentRequest = nil;
}
}
Теперь я не думаю, что это хорошая практика, и когда метод вызван, я получаю (NSURLErrorDomain error -999.)
, поэтому мне нужен совет, чтобы сделать это правильно.
Спасибо заранее.