ASINetworkQueue поддерживает несколько requestDidFinishSelectors? - PullRequest
0 голосов
/ 02 сентября 2011

В контроллере представления у меня есть несколько методов с разными ASIFormDataRequests, которые имеют разные finSelectors. поэтому methodA -> finishselector (AFinished :), methodB -> finishselector (BFinished :) и methodC -> finishselector (CFinished:)

У меня есть 1 метод, который обрабатывает все запросы, как показано ниже:

-(void)sendRequest:(NSURL *)url withParams:(NSDictionary *)params andSelector:(NSString *)selector
{
NSString *jsonString = [params yajl_JSONString];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:jsonString forKey:@"json"];
[request setTimeOutSeconds:15];
[[self networkQueue] setDelegate:self];
[[self networkQueue] setRequestDidFinishSelector:NSSelectorFromString(selector)];
[[self networkQueue] setRequestDidFailSelector:@selector(asiRequestFailed:)];
[[self networkQueue] addOperation:request];
[[self networkQueue] go];
}

Я заметил, что когда я отправлял запросы на метод A-> B-> C и B заканчивал работу раньше, чем A, то BFinished: вызывался бы дважды, сначала с данными, соответствующими методу B, затем с данными, соответствующими методу A. Делает ли ASINetworkQueue только обрабатывать 1 отделкойВыберите за раз? мне нужно разделить сетевые очереди для каждого метода?

Спасибо

1 Ответ

0 голосов
/ 20 сентября 2011

Запросы, отправленные с помощью ASINetworkQueue, по-прежнему запускают свой setCompletionBlock при завершении запроса.Блоки завершения выполняются перед селектором очереди для requestFinished.Смотрите этот блог для учебника:

http://ygamretuta.me/2011/09/20/manage-multiple-asynchronous-request-in-ios-with-asinetworkqueue/

...