iOS NSURLConnection sendAsynchronousRequest 在哪个线程上运行
iOS which thread NSURLConnection sendAsynchronousRequest runs on
我正在使用以下代码进行网络调用。我知道 mainQueue 中的响应将是 运行,因为我已将队列参数指定为 [NSOperationQueue mainQueue]
,但我想知道实际的 sendAsynchronousRequest
操作将在哪里执行。该操作是从 mainThread 调用的,那么 运行 会在主线程上异步还是 NSURLConnection
自动创建后台线程?没有这方面的文档,并且 iOS 仪器没有显示分离的后台线程,所以想知道它究竟是如何工作的!苹果文档没有给出这方面的细节。
顺便说一句,我知道这已被弃用,但我们有遗留代码尚未迁移以使用 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];
这里也不确定这个请求在哪个线程上执行以及如何使这个运行异步!
NSURLConnection
使用自己的内部队列。它现在是 NSURLSession
的包装器,您可以通过在线程列表中查找 com.apple.NSURLSession-work
来找到队列(如果您有兴趣)。
我正在使用以下代码进行网络调用。我知道 mainQueue 中的响应将是 运行,因为我已将队列参数指定为 [NSOperationQueue mainQueue]
,但我想知道实际的 sendAsynchronousRequest
操作将在哪里执行。该操作是从 mainThread 调用的,那么 运行 会在主线程上异步还是 NSURLConnection
自动创建后台线程?没有这方面的文档,并且 iOS 仪器没有显示分离的后台线程,所以想知道它究竟是如何工作的!苹果文档没有给出这方面的细节。
顺便说一句,我知道这已被弃用,但我们有遗留代码尚未迁移以使用 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];
这里也不确定这个请求在哪个线程上执行以及如何使这个运行异步!
NSURLConnection
使用自己的内部队列。它现在是 NSURLSession
的包装器,您可以通过在线程列表中查找 com.apple.NSURLSession-work
来找到队列(如果您有兴趣)。