它是什么意思“NSURLSession API是高度异步的”?

时间:2016-07-11 09:52:27

标签: ios asynchronous nsurlsession

session成为已配置的NSURLSession对象。在Swift中为此会话创建任务的典型代码是

let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in 
//my custom completion handler invocation
})

我的疑问是,我的自定义完成处理程序是否在dispatch_async调用中被调用以避免阻塞UI线程?或者它不需要,因为API本质上是异步的,方法dataTaskWithRequest(_:completionHandler)会处理?

同样在documentation中,该方法没有完成处理程序块,如您所见。但是我看过很多使用这种方法的教程!?

1 个答案:

答案 0 :(得分:2)

完成处理程序在您提供的队列或其自己的串行队列上运行。除非您在创建会话AFAIK时明确传入主队列,否则回调将阻止主线程的唯一情况是,如果您的完成处理程序显式调用performSelectorOnMainThread:dispatch_async / {{1}与sync