我正在学习 Objective-C 并试图更好地理解 GCD。我创建了一个APICaller
进行 API 调用的对象 ( ),然后向其委托提供信息。在这个对象的委托的 ( TableViewControllerA
)viewDidLoad
方法中,我调用APICaller
' 的方法之一,然后使用该信息更新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;
}
}
...虽然这会立即更新单元格:
- (void)viewDidLoad
{
APICaller *apiCaller = [APICaller alloc] init];
[apiCaller getInformationWithArgument:self.argument completionHandler:^(NSString *results, NSError *error) {
dispatch_async(dispatch_get_main_queue, ^(void) {
_staticCell.detailTextLabel.text = results;
});
}
}