我在iOS7中遇到应用程序崩溃,但正在使用iOS6。在从AppDelegate调试下一个代码时,我检查了在iOS7中执行下一个函数然后加载了模态视图控制器。
- (void)presentModalWebViewWithURL:(NSURL *)url title:(NSString *)title
{
[self.modalWebViewController dismissModalViewControllerAnimated:YES];
self.modalWebViewController = [[[MyModalWebViewController alloc] initWithURL:url] autorelease];
self.modalWebViewController.title = title;
UINavigationController *nav = [self.modalWebViewController modalNavigationControllerWithTarget:self dismissSelector:@selector(dismissModalWebView)];
[self.window.rootViewController presentViewController:nav animated:YES completion:NULL];
}
在iOS6中,我检查该函数是否在最后一行停止执行,直到加载了模态视图控制器。
iOS7中发生的情况是,当模态视图控制器尝试加载运行viewWillAppear
时,我能够检查模态视图控制器是否已更改所有值,甚至属性指向不同类型的对象。我猜他们正在被解除分配,但我无法弄清楚为什么以及如何解决它。有什么建议吗?
答案 0 :(得分:1)
当您关闭模态视图控制器时,您应该在呈现视图控制器的视图控制器上调用dismiss方法。此外,不推荐使用dismissModalViewControllerAnimated:
方法,您应该使用dismissViewControllerAnimated:completion:
。所以看一下你的代码,你可能应该在self.window.rootViewController
上调用dismiss方法,因为那就是你提供的模态视图。
另外,不知道代码的其余部分是什么样的,我假设第一次调用它,self.modalWebViewController
为nil,所以你可能想检查self.modalWebViewController
是否设置为某个东西在你打电话给解雇之前,并且在你解雇它的时候也把它设置为零。