NSURLSession performSegueWithIdentifier未运行

时间:2014-06-18 21:38:21

标签: ios segue nsurlsession

我有以下代码,但不确定为什么它没有运行:

 NSURLSession *session = [NSURLSession sharedSession];
 NSURLSessionDataTask *dataTask = [session dataTaskWithURL:
 [NSURL        URLWithString:myURLString] completionHandler:^
 (NSData *data, NSURLResponse *response, NSError *error) 
 {NSDictionary *json =   
  [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

 [self performSegueWithIdentifier:@"login" sender:self];}];


 [dataTask resume];

preformSegueWithIdentifier可在外部工作,但不在括号内。但我使用NSUrlConnection做了类似的事情,并且工作正常。我非常了解NSURLSession有关为什么performSegueWithIdentifier不会在通话中运行的任何想法。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果按照自己的方式创建NSURLSession对象,它将创建一个不是主队列的新串行操作队列。 dataTaskWithURL:方法的完成处理程序在会话的队列上运行,因此它无法正常工作,因为您正在尝试在后台队列上执行UI任务。要解决此问题,请按以下步骤创建会话

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate: nil delegateQueue: [NSOperationQueue mainQueue]];