Bueno, yo estaba haciendo lo mismo. Tuve que ejecutar una solicitud síncrona ajax que congelaba mi UI. Así que así es como lo arreglé:
__block NSString *message;
dispatch_queue_t q = dispatch_queue_create("sign up Q", NULL);
dispatch_async(q, ^{
NSString *function = [[NSString alloc] initWithFormat: @"signup(\'%@\',\'%@\',\'%@\')",self.email.text,self.password.text,self.name.text];
dispatch_async(dispatch_get_main_queue(), ^{
NSString *result = [self.webView stringByEvaluatingJavaScriptFromString:function];
NSLog(@"%@",result);
if ([result isEqualToString:@"1"]) {
message = [NSString stringWithFormat:@"Welcome %@",self.name.text];
[self.activityIndicator stopAnimating];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
else {
message = [NSString stringWithFormat:@"%@ is a registered user",self.name.text];
[self.activityIndicator stopAnimating];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Message" message:message delegate:self cancelButtonTitle:@"Okay" otherButtonTitles: nil];
[alertView show];
});
});
La lógica es simple. Ir a un nuevo hilo, y desde allí, despachar a la cola principal y luego hacer el trabajo de JS y todo funcionó como un amuleto para mí ...
¿Cómo ayudará eso? –