2

我正在正确地从 A 推送 BViewController。B 包含一个 webview,当 viewDidLoad 时开始加载页面。将 B 弹出到 A 时出现奇怪的行为,

  1. 如果 webview 完成加载,然后我执行 popViewController(在工具栏按钮上的 touchUpInside 时执行 IBAction),弹出到 A,所以一切正常。
  2. 但是,如果我在 webview 结束加载之前立即弹出视图控制器,应用程序会由于 exc_bad_access 而崩溃。为什么?视图已加载!

我检查了导航堆栈上的两种情况视图控制器。两种情况都具有相同的结果,2个相同的对象,没有区别!

-(IBAction)goBackOrg:(id)sender{

    NSArray *viewControllers = self.navigationController.viewControllers;

    [[self navigationController]  popViewControllerAnimated:NO];

}

对于以前推动它,我正在使用

if(!self.BController){

            self.BController = [[BViewController alloc] initWithNibName:@"BViewController" bundle:nil anUrlDest:urlSocial];
        }

    [[self navigationController] pushViewController:self.BController animated:NO];
4

2 回答 2

1

当您尝试访问已被释放的对象时,会发生 EXC_BAD_ACCESS。

所以以下可能是您的问题:当您弹出 ViewController B 时,它正在被卸载。如果在 ViewController B 卸载后 web 视图加载完成,则正在执行一些回调代码,它试图对您的 ViewController 或其视图(或类似)执行某些操作。

于 2012-11-28T14:26:28.993 回答
0

可能是您正在加载您的 webView,Thread并且当您使用线程时,您无法在 UI 中进行更改,否则您的应用程序将崩溃。

所以只需在 mainThread 上执行此任务。

于 2012-11-28T14:38:18.613 回答