pushViewController需要太多才能显示视图

And*_*res 3 cocoa-touch objective-c ios

我有一个非常轻的ViewController,它在viewDidLoad中什么都不做.我在navigationController的顶部推动这个视图.执行此操作的方法是从块内部调用的.在调用showView后我添加了一个NSLog,并且该日志在控制台中打印速度非常快,但视图需要加载很多...我真的不明白可能发生的事情......任何想法???

ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
    [self showView];
    NSLog(@"EXECUTED");                
});

- (void) showView{
    TestViewController *test = [[TestViewController alloc]init];
    [self.navigationController pushViewController:test animated:NO];
}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 9

来自以下文档ABAddressBookRequestAccessWithCompletion:

在任意队列上调用完成处理程序.如果您的应用程序在整个应用程序中使用通讯簿,则您有责任确保将该通讯簿的所有使用情况分派到单个队列,以确保正确的线程安全操作.

您应该确保在主线程上调用您的UI代码.

ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error {
     dispatch_async(dispatch_get_main_queue(), ^{
         [self showView];
         NSLog(@"EXECUTED");                
     });
});
Run Code Online (Sandbox Code Playgroud)