我有一个导航控制器说navA,它可以呈现(即模态)另一个导航控制器navB,而navB也可以呈现另一个导航控制器navC,我观察到当navB呈现navC时,随机可能有延迟,I尝试在navB提供navC之前以及完成块中记录:
// inside a VC which is on navB's stack:
NSLog(@"started");
[self.navigationController presentViewController:navC animated:YES completion:^{
NSLog(@"completed");
}];
有没有人见过这种问题?或者还有其他问题我错过了吗?
更新
我在不同的VC生命周期方法中记录了一些日志:
2014-12-11 10:16:41.631 ####### [78210:7119850] DID INIT
2014-12-11 10:16:41.631 ####### [78210:7119850] DID FINISH INIT
2014-12-11 10:17:00.007 ####### [78210:7119850] DID LOAD
2014-12-11 10:17:00.010 ####### [78210:7119850]将出现
2014-12-11 10:17:00.517 ####### [78210:7119850] DID APPEAR
所以在viewDidLoad
之后,调用viewWillAppear
花了将近19秒,我猜它在加载/呈现视图之前正在做一些内部视图层次结构工作?
更新2:
这似乎是iOS 8+上的常见问题,快速解决方法是将presentVC ...代码放在主队列上的dispatch_async块中。