我正在学习Objective-C并且正在尝试更好地理解GCD。我创建了一个进行API调用的对象(APICaller
),然后向其代理提供信息。在此对象的委托(TableViewControllerA
)viewDidLoad
方法中,我调用APICaller
方法之一,然后使用该信息更新{ {1}}两个静态单元格。我的问题:为什么,当我使用detailTextLabel.text
时,dispatch_async
更新的速度是否比不使用它更快?
这会更新单元格,但延迟时间很长:
detailTextLabel.text
...虽然这会立即更新单元格:
- (void)viewDidLoad
{
APICaller *apiCaller = [APICaller alloc] init];
[apiCaller getInformationWithArgument:self.argument completionHandler:^(NSString *results, NSError *error) {
_staticCell.detailTextLabel.text = results;
}
}
答案 0 :(得分:1)
第一个代码片段中显示的完成处理程序未在主线程上运行,因此每当系统决定需要更新时,它都会更新。第二个片段使用GCD显式运行主线程,因此立即更新。