popViewController时的EXC_BAD_ACCESS

时间:2012-11-28 14:23:05

标签: iphone objective-c ios xcode cocoa-touch

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

  1. 如果webview完成其加载,然后我执行popViewController(在工具栏按钮上的touchUpInside时的IBAction),弹出到A以便一切正常。
  2. 但是,如果我在webview结束加载之前立即执行popViewController,应用程序会因exc_bad_access而崩溃。为什么?视图已加载!
  3. 我检查了导航堆栈上的两种情况viewcontrollers。两种情况都有相同的结果,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];
    

2 个答案:

答案 0 :(得分:1)

当您尝试访问已解除分配的对象时,会发生EXC_BAD_ACCESS。

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

答案 1 :(得分:0)

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

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