我想知道当我使用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/

10-10 21:10