Objective c pushViewController占用太多,无法显示视图

Objective c pushViewController占用太多,无法显示视图,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我有一个非常轻的ViewController,它在viewDidLoad中什么都不做。我将此视图推到navigationController的顶部。执行此操作的方法从块内部调用。调用showView后,我添加了一个NSLog,该日志在控制台中打印得非常快,但是视图需要加载很多。。。我真的不明白会发生什么。。。有什么想法吗 ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef erro

我有一个非常轻的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];
}

这可能不是唯一的问题,但根据,传递给
ABAddressBookRequestAccessWithCompletion
的完成处理程序在任意队列上被调用
-showView
只应在主队列上调用,因为它处理的是
UIViewController
对象


另一个问题是,在主队列上还发生了什么?是否有其他长时间运行的任务可能会阻止UI更新?
ABAddressBookRequestAccessWithCompletion的文档中的:

在任意队列上调用完成处理程序。如果您的应用程序在整个应用程序中使用地址簿,则您有责任确保将该地址簿的所有使用发送到单个队列,以确保正确的线程安全操作

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

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

你能发布TestViewController吗?很难看到这里发生了什么确保修复语法突出显示,我不能,因为它们只是spaces@NSAddict谢谢-我经常注意到这样的事情。