我想知道当我使用completionHandler
时是否在主线程上调用NSURLConnection sendAsynchronousRequest
块。我主要担心的是我是否需要自己在主线程上发送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"];
}
}];
答案 0 :(得分:5)
来自NSURLConnection sendAsynchronousRequest:queue:completionHandler:
方法的文档:
加载URL请求的数据,并在请求完成或失败时在操作队列上执行处理程序块。
同样来自关于queue
参数的评论:
请求完成或失败时将处理程序块分派到的操作队列。
由于您传入主队列,因此完成处理程序将位于主线程上(主队列位于主线程上)。