Ios NSURLSession和多线程

Ios NSURLSession和多线程,ios,objective-c,macos,grand-central-dispatch,nsurlsession,Ios,Objective C,Macos,Grand Central Dispatch,Nsurlsession,我只是想澄清一些事情,尽管从我迄今为止在苹果的文档中所读到的内容来看,这似乎相当简单。 当NSURLSession开始运行时,默认情况下,所有任务都设置为在单独的线程上运行。所以当我写作的时候 NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil]; [[session downloadTaskWithRequest:request]

我只是想澄清一些事情,尽管从我迄今为止在苹果的文档中所读到的内容来看,这似乎相当简单。 当
NSURLSession
开始运行时,默认情况下,所有任务都设置为在单独的线程上运行。所以当我写作的时候

NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
[[session downloadTaskWithRequest:request] resume];
下载过程(委托方法、完成处理程序e.t.c.)在主队列以外的队列(即线程)上运行。例如,不需要自己创建
NSOperationQueue
,也不需要将“resume”调用放入
GCD
块中(例如
dispatch\u async()


我理解正确了吗?

是的,默认情况下所有内容都在后台线程中运行,如果您愿意,也可以在运行时检查这些内容。

我猜下面的链接将回答您的查询,其中给出了有关NSURLSession的简要信息,其中提到“无需NSOperation子分类”。此外,您不需要指定正在运行的队列。除非您另外指定,否则调用将在后台线程上进行

问候,,
Anil

或者,如果会话必须在主线程上运行,可以通过以下方式完成:-

[NSURLSession sessionWithConfiguration:sessionConfig delegate:sender delegateQueue:[NSOperationQueue mainQueue]];