我想知道当我使用completionHandler
时是否在主线程上调用了NSURLConnection sendAsynchronousRequest
块。我主要关心的是我是否需要自己在主线程上分派(dispatch)UIKit
调用。
除非我错过了,否则NSURLConnection
的文档没有提及此细节。
我分析了我的代码,没有内存泄漏,这表明该块是在主线程上执行的。
是否有任何文件可以给出明确的答案?
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
[self.progress stopAnimating];
if (data != nil) {
...
} else {
[self showMessageIgnoreAcknowledgement:@"Error" message:@"blah"];
}
}];
最佳答案
从NSURLConnection sendAsynchronousRequest:queue:completionHandler:
方法的文档中:
同样从关于queue
参数的注释中:
由于您要传入主队列,因此完成处理程序将位于主线程上(主队列位于主线程上)。
关于ios - NSURLConnection sendAsynchronousRequest完成块是否在主线程上执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25111499/