Я изучаю 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;
});
}
}