Ich mache eine JSON Anfrage mit AFNetworking und rufe dann [operation waitUntilFinished] auf, um auf die Operation und die Erfolgs- oder Fehlerblöcke zu warten. Aber, so scheint es richtig, wenn zu fallen - in Bezug auf den Log-Meldungen, erhalte ich "0", "3", "1" statt "0", "1", "3"Warten auf Fertigstellungsblock, um in einer AFNetworking Anfrage abzuschließen
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://google.com"]];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
httpClient.parameterEncoding = AFFormURLParameterEncoding;
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"query", @"q", nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" path:[url path] parameters:params];
NSLog(@"0");
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *innerRequest, NSHTTPURLResponse *response, id JSON) {
NSLog(@"1");
gotResponse = YES;
} failure:^(NSURLRequest *innerRequest, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"2");
gotResponse = YES;
}];
NSLog(@"Starting request");
[operation start];
[operation waitUntilFinished];
NSLog(@"3");
Es scheint, als ob der Aufruf von '[operation waitUntilFinished]' nicht auf die Abschlussblöcke wartet. AFJSONRequestOperation.m führt sie mit 'dispatch_async' aus, was meiner Meinung nach Teil einer separaten Operation wird. Ist das richtig und gibt es einen Weg um es herum? – Kamran