我正在開發一個需要登錄表單的項目,使用webservice進行驗證。我沒有連接到服務器的問題,但似乎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」)後,我似乎差不多吧按下登錄按鈕,但需要一段時間(很長一段時間),UIAlertView顯示的時間超過10秒。我也無法與用戶界面進行交互。
在此先感謝您的每一個解決方案。
在另一個線程上執行異步請求或請求。 – Larme
我沒有創建任何線程。這些代碼位於我的登錄按鈕中。這是程序第一步的登錄表單。 –
@Larme他這樣做是異步的。問題是完成塊(並且因此警報視圖)沒有在主線程上運行。 – Rob