当前位置 : 主页 > 手机开发 > ios >

ios – 为什么在requestAccessToEntity中使用performSegueWithIdentifier时使用dispatch_async:

来源:互联网 收集:自由互联 发布时间:2021-06-11
当我在完成块中调用performSegueWithIdentifier时,如果我没有将调用包装在dispatch_async中,则实际发生segue需要10秒钟.但是,我可以做其他事情而不将它们包装在同一个dispatch_async中,例如进行核心
当我在完成块中调用performSegueWithIdentifier时,如果我没有将调用包装在dispatch_async中,则实际发生segue需要10秒钟.但是,我可以做其他事情而不将它们包装在同一个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];
    });
}];
从 documentation:

When the user taps to grant or deny access, the completion handler will be called on an arbitrary queue.

此外,所有与UI相关的东西必须在主队列上完成.这就是你需要dispatch_async的方式.

网友评论