2015-04-01 1 views
0

Я использую NSURLSession, чтобы получить информацию с моего сервера. После того, как я получу данные, я покажу его в UIAlertView, но это занимает слишком много времени, чтобы показать. Я печатаю данные с помощью NSLog, и он печатает его почти мгновенно ... Так что происходит? Не является ли метод dataTaskWithRequest несинхронным? Почему так много времени появляется, чтобы вывести предупреждение?UIAlertView занимает слишком много времени при использовании внутри NSURLSession

NSURLSession *session; 
session = [NSURLSession sharedSession]; 
NSURL * url = [NSURL URLWithString:[DRESSABLE_IP stringByAppendingString:@"index.php"]]; 
NSMutableURLRequest * urlRequest = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:CONNECTION_CACHEPOLICY timeoutInterval:CONNECTION_TIMEOUT]; 
[urlRequest setHTTPMethod:@"POST"]; 
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest 
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     NSString *total = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
     [[[UIAlertView alloc] initWithTitle:@"Title" message:total delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] show]; 
}]; 

ответ

7

Все действия пользовательского интерфейса должны выполняться в основной очереди.

NSURLSession *session; 
session = [NSURLSession sharedSession]; 
NSURL * url = [NSURL URLWithString:[DRESSABLE_IP stringByAppendingString:@"index.php"]]; 
NSMutableURLRequest * urlRequest = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:CONNECTION_CACHEPOLICY timeoutInterval:CONNECTION_TIMEOUT]; 
[urlRequest setHTTPMethod:@"POST"]; 
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest 
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     NSString *total = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
dispatch_async(dispatch_get_main_queue(),^{ 
     [[[UIAlertView alloc] initWithTitle:@"Title" message:total delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] show]; 
}); 
}]; 
+0

Вы правы, большое вам спасибо! –

Смежные вопросы