[objective-c] 40 secondes pour afficher un label !

benoit09

Nouveau membre
27 Octobre 2017
3
0
26
Bonjour,
Je suis débutant en développement iphone, je souhaite faire une requête post vers un service web et afficher le résultat dans un label, ça fonctionne sauf que le résultat s'affiche en moyenne 40 secondes plus tard ! J'affiche aussi dans la console le résultat au même moment et dans la console c'est immédiatement là ! Avez-vous une idée ? Voici mon code :

Bloc de code:
-(void) viewDidAppear:(BOOL)animated{
    
    if(_mavariable != nil){
        NSString *post = [NSString stringWithFormat:@"%@;%@",_mavariable,_unesecondevariable];
        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
        NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:[NSURL URLWithString:@"https://ladressedemonserviceweb"]];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setHTTPBody:postData];
        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
        [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
            NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"Request reply: %@", requestReply);
            _lblMessage.text = requestReply;
        }] resume];
       
    }
}
 

benoit09

Nouveau membre
27 Octobre 2017
3
0
26
après tout un week-end a essayer différentes manière de taper ma recherche sur google, j'ai fini par trouver la solution, au lieu de mettre juste _lblMessage.text = requestReply mettre :

Bloc de code:
dispatch_async(dispatch_get_main_queue(), ^{
                _lblMessage.text = requestReply;});
        }] resume];
 

Larme

Vétéran
Club MacG
11 Décembre 2007
6 491
398
Paris
Normalement, XCode te donne un warning en violet (Run Time Error).
Il te rappelle que tout changement d'UI doit se faire dans le main thread.