3

当我在完成块中调用 performSegueWithIdentifier 时,如果我不将调用包装在 dispatch_async 中,则实际上需要 10 秒才能真正发生 segue。但是,我可以在不将它们包装在同一个 dispatch_async 中的情况下做其他事情,例如做核心数据工作,或者记录“事物”......

关于它是如何工作的以及为什么......我迷路了。如果这里不适合提出这样的问题,我深表歉意。

EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self performSegueWithIdentifier:self.phaseSegue sender:self];
    });
}];
4

1 回答 1

7

文档中:

当用户点击以授予或拒绝访问时,将在任意队列上调用完成处理程序。

此外,所有与 UI 相关的事情都必须在主队列中完成。这就是你需要的方式dispatch_async

于 2014-03-11T03:10:36.940 回答