我在iOS应用中以模态方式呈现一个视图控制器。 问题是调用presentViewController:animated后没有崩溃,但应用程序会立即冻结。 统计数据显示CPU使用率为100%,甚至手动关闭应用程序之后使用率也不会降下来。
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
CustomModalViewController *vvc = [sb instantiateViewControllerWithIdentifier:@"CustomModalViewController"];
if(!vvc){
NSLog(@"ERROR!!! vvc is null");
}
NSLog(@"instantiate modal view controller");
vvc.providesPresentationContextTransitionStyle = YES;
vvc.definesPresentationContext = YES;
vvc.data = data;
NSLog(@"before presenting modal view controller");
[vvc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self presentViewController:vvc animated:YES completion:nil];
我尝试在自定义类的viewDidLoad中打印一些调试语句,但是那些也没有被调用。我不明白为什么视图控制器没有显示。任何帮助将不胜感激。我想知道在什么情况下您的应用程序在推送视图控制器时会进入无限循环,或者是因为其他原因导致的?更新:在我升级到XCode 7之后出现了这个错误。不确定,但我猜测这可能是新SDK-UIKit或LLVM编译器的问题。我将我的项目复制到另一台安装Xcode 6.4的Mac上,错误消失了!我也没有更改任何可能导致问题的构建设置。如何继续进行?
let view=vvc.view
会强制调用vvc
的viewDidLoad
。如果它现在卡在这一行上,那么你的问题就在于CustomModalViewController
中。很可能是在它的viewDidLoad
中出了问题。你也可以暂停调试器,查看堆栈跟踪中的位置。 - Rory McKinnel