【问题标题】:popToRootViewController crashingpopToRootViewController 崩溃
【发布时间】:2011-01-17 01:51:21
【问题描述】:

我是一个相对较新的 iPhone 应用程序开发人员,所以我的知识有点粗略,所以如果这是一个微不足道的问题,请原谅我。

我有一个导航应用程序,它通过在 navigationController 对象上调用 pushViewController 在表视图之间进行钻取

我有一个特定的部分,当用户通过界面时,它会按顺序推送新的视图控制器。视图控制器都是 UIViewController 的子类。

一切正常,直到结束,这里的想法是用户按下“完成”按钮并返回到根视图控制器(主菜单)。

所以在按下按钮时我调用:

[[self navigationController] popToRootViewControllerAnimated:YES];

然后它崩溃了。

我有点担心这可能是一个大问题,因为这在某些时候确实可以工作,但现在总是失败。

任何人都可以提供任何想法/建议吗?

【问题讨论】:

  • 是否有任何堆栈跟踪?你知道它在崩溃吗?
  • 原谅我的笨拙,但我将如何获得堆栈跟踪? :s 我按下显示控制台,它并没有真正放弃...
  • 在 gdb 控制台输入 bt 以回溯堆栈

标签: iphone objective-c memory-management uiviewcontroller uinavigationcontroller


【解决方案1】:

正如其他人评论的那样,第一步是运行这是调试模式并找出崩溃的位置和原因。

最常见的崩溃类型是使用解除分配的对象 (EXEC_BAD_ACCESS)。你有没有运行静态分析器?您是否正确保留了对象引用?

【讨论】:

    【解决方案2】:

    一些建议:

    • 在调用popToRootViewControllerAnimated: 之前确认RootViewController 确实存在。如果它在某处死掉,调用该方法将导致崩溃。
    • 检查您上次查看的– viewWillDisappear:– viewDidDisappear: 方法,以确保您没有在那里做危险的事情。
    • 不确定弹出视图是否会导致它始终释放,但请检查视图及其控制器的 dealloc 方法以确保您不会过度释放某些内容。
    • 我经常看到的一个错误是从控制器释放数据模型中的对象。当另一个控制器(在本例中为 RootViewController)尝试访问数据模型时,应用程序崩溃。

    听起来您需要如何使用 Xcode 调试器。在 Xcode 帮助中输入调试器以获取指针。

    【讨论】:

      【解决方案3】:

      您不应该在 viewWillDisappear 中使用 popToRootViewController。 相反,如果您想在按下后退按钮时弹出到根控制器,您应该自己替换后退按钮并向其添加操作。尝试做类似 ::

      UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:@"back"
                                                                     style:UIBarButtonItemStyleBordered
                                                                    target:self
                                                                    action:@selector(goBack:)]; 
      self.navigationItem.leftBarButtonItem = back;
      

      然后将动作处理为::

      - (void) goBack:(id)sender
      {
          // pop to root view controller
          [self.navigationController popToRootViewControllerAnimated:YES];
      
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 2012-02-11
        相关资源
        最近更新 更多