【发布时间】:2016-02-23 17:44:58
【问题描述】:
我正在使用以下代码进行网络调用。我知道响应将在 mainQueue 中运行,因为我已将队列参数指定为 [NSOperationQueue mainQueue] 但我想知道实际的 sendAsynchronousRequest 操作将在哪里执行。该操作是从 mainThread 调用的,所以它会在主线程上异步运行还是 NSURLConnection 自动创建后台线程?没有这方面的文档,iOS 仪器也没有显示分离的后台线程,所以想知道这到底是如何工作的! Apple 文档没有提供这方面的详细信息。
顺便说一句,我知道这已被弃用,但我们还有遗留代码尚未迁移以使用 NSURLSession
[NSURLConnection sendAsynchronousRequest:urlRequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if(completion) {
completion(data, error);
}
}];
使用以下版本时同样的问题;
self.urlConnection = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
这里也不确定这个请求在哪个线程上执行以及如何让它异步运行!
【问题讨论】:
-
是它给你带来了问题还是你只是好奇?
-
它不会引起任何问题,但我想确保操作不能在主线程上运行,并且应该在其他线程上分离。除非绝对需要,否则我不想在后台线程上调度。
标签: ios nsurlconnection nsoperationqueue networkonmainthread