[英]NSURLSession in main thread
我正在尝试从 MySQL 下载数据。 然而,当 NSURLSession 创建一个新线程时,数据还没有完全下载,因此主线程正在处理空值/崩溃。 我使用过 GCD 的 dispatch_async,但是它慢了几毫秒。
在我的测试程序中,我有两个 NSLog,一个直接在调用 NSURLSession 方法之后,另一个在方法本身中。 输出(如下)显示 NSURLSession 延迟了 30 毫秒。 虽然时间本身并不多,但它会对我如何安排我的任务产生巨大影响。 有没有办法暂停主线程,直到数据下载完毕,方法完成?
2014-03-30 18:56:06.224 TestProgram[1396:60b] (null) 2014-03-30 18:56:06.258 TestProgram[1396:60b] [{"error":200}]
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
if(error == nil)
{
dispatch_async(dispatch_get_main_queue(), ^{
NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"%@",text);
NSError *error;
self.json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
for(int i =0 ; i < self.json.count ; i++)
{
[dataParse setDictionary:_json[i]];
}
});
} else {
NSLog(@"Response:%@ %@\n", response, error);
}
}];
[dataTask resume];
查看 NSURLSessionDataTask 完成例程的文档。 这似乎意味着此时数据尚未完全下载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.