인증을 위해 웹 서비스를 사용하여 로그인 양식이 필요한 프로젝트 작업 중입니다. 서버에 연결하는 데 문제가 없지만 NSURLSession이 내 사용자 인터페이스를 차단하는 것처럼 보입니다. 그리고 많은 디버깅 후에 이유를 알지 못합니다. 편의상NSURLSession을 사용할 때 UI가 차단됩니다.
, 여기에 짧은 내 코드입니다 :
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"example.com/service"]];
//1
//_sessionLogin = [NSURLSession sessionWithConfiguration:sessionConfigurationLogin delegate:self delegateQueue:nil];
//2 //Whether I use 1 or 2, it acts the same way
_sessionLogin = [NSURLSession sharedSession];
NSURLSessionDataTask *sessionDataTaskLogin = [_sessionLogin dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
if(!error)
{
NSLog(@"loginWithSuccess");
UIAlertView *alertError = [[UIAlertView alloc] initWithTitle:@"Login ok" message:@"ok" delegate:self cancelButtonTitle:@"Close" otherButtonTitles: nil];
[alertError show];
}
}];
//Begin login request
[sessionDataTaskLogin resume];
_sessionLogin가 NSURLSession
내 서버에 대한 연결이 NSLog 빠르고,있는 그대로 ("loginWithSuccess"@) I 후 거의 바로 나타납니다 로그인 버튼을 눌렀으나 UIAlertView가 보여준 10 초 이상 동안 (오랫동안 오래 걸립니다) 시간이 걸립니다. 그리고 나는 UI와도 상호 작용할 수 없다.
모든 솔루션에 대해 미리 감사드립니다.
다른 스레드에서 비동기 요청 또는 요청을 수행하십시오. – Larme
나는 어떤 스레드도 만들지 않았습니다. 이 코드는 내 로그인 버튼에 있습니다. 이것은 프로그램의 첫 단계에있는 로그인 양식입니다. –
@Larme 그는 비동기 적으로 처리하고 있습니다. 문제는 완료 블록 (따라서 경고보기)이 주 스레드에서 실행되고 있지 않다는 것입니다. – Rob