我正在使用下面的代码来进行网络调用。我知道响应将在mainQueue中运行,因为我已经指定队列参数为[NSOperationQueue mainQueue]
,但我想知道实际的sendAsynchronousRequest
操作将在哪里执行。这个操作是从mainThread调用的,所以在主线程上异步运行或者NSURLConnection
会自动创建后台线程?没有这方面的文档,iOS仪器不显示后台线程分离,所以想知道这是如何工作的! Apple文档没有提供关于此的详细信息。iOS哪个线程NSURLConnection sendAsynchronousRequest运行于
顺便说一句,我知道这是过时,但我们有遗留代码尚未迁移当您使用以下版本使用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];
这里也不能确定这个请求执行在哪个线程上,以及如何使它异步运行!
它是否会造成您的问题,或者您只是好奇? – Wain
它不会导致任何问题,但我想确保操作不能在主线程上运行,并且应该在其他线程上分离。除非绝对需要,否则我不想在后台线程上调度。 – applefreak