未调用 NSURLSessionDataTask 完成处理程序块
Posted
技术标签:
【中文标题】未调用 NSURLSessionDataTask 完成处理程序块【英文标题】:NSURLSessionDataTask completion handler block is not called 【发布时间】:2016-02-18 17:42:19 【问题描述】:下面是我的代码
NSURL *serverUrl =[NSURL URLWithString:urlString];
NSURLSession *session=[NSURLSession sharedSession];
NSURLSessionDataTask *sessionTask =[session dataTaskWithURL:serverUrl completionHandler:^(NSData *data,NSURLResponse *response,NSError *errror)
NSString *returnedString =[NSString stringWithUTF8String:[data bytes]];
NSLog(@"returnedString %@",returnedString);
NSError *parseError;
NSArray *jsonArray=[NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
NSLog(@"jsonArray %@",jsonArray);
];
[sessionTask resume];
Completion Handler 块没有被执行。如果我保留断点并检查直到 NSURLSessionDatatask 它工作得很好。一旦它到达完成处理程序块,断点就会跳转到 [datatak resume] 行。这是我的问题。
【问题讨论】:
【参考方案1】:completionHandler 不会立即执行,就像名字听起来一样,它只会在任务完成后执行。
所以它的正常行为是不立即执行完成处理程序并转到下一行。
【讨论】:
我的回复没有打印出来。没有得到服务器的响应。 在 completionHandler 块中放一个断点并检查你得到的数据是什么。以上是关于未调用 NSURLSessionDataTask 完成处理程序块的主要内容,如果未能解决你的问题,请参考以下文章
appdelegate 中的 NSURLSessionDataTask
如何从 NSURLSessionDataTask 完成处理程序返回 NSData
为啥我的 NSURLSession dataTask 多次调用服务器?
如何从NSURLSessionDataTask完成处理程序返回NSData