在 NSURLSession 内部使用时,UIAlertView 花费的时间太长
UIAlertView takes too long when using inside NSURLSession
我正在使用 NSURLSession
从我的服务器获取一些信息。
获取数据后,我将其显示在 UIAlertView
中,但显示时间太长。我用 NSLog
打印数据,它几乎立即打印出来……那么发生了什么?方法 dataTaskWithRequest
不是异步的吗?为什么弹出提醒视图需要这么长时间?
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];
}];
所有UIactivity必须在主队列中完成。
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];
});
}];
我正在使用 NSURLSession
从我的服务器获取一些信息。
获取数据后,我将其显示在 UIAlertView
中,但显示时间太长。我用 NSLog
打印数据,它几乎立即打印出来……那么发生了什么?方法 dataTaskWithRequest
不是异步的吗?为什么弹出提醒视图需要这么长时间?
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];
}];
所有UIactivity必须在主队列中完成。
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];
});
}];