popToRootViewControllerAnimated 在 IOS 7 sim 上的 Xcode5 中使 App 崩溃

Posted

技术标签:

【中文标题】popToRootViewControllerAnimated 在 IOS 7 sim 上的 Xcode5 中使 App 崩溃【英文标题】:popToRootViewControllerAnimated crashes App in Xcode5 on IOS 7 sim 【发布时间】:2013-11-10 00:34:29 【问题描述】:

我在升级到 Xcode5 时遇到问题。在我开始更改项目中的任何内容之前,我想我会使用 ios7 3.5 英寸模拟器构建和运行它。有两个主要问题,这是我无法弄清楚的主要问题。我已经确定了一行代码,直到现在它一直运行良好——现在每当它运行我的应用程序时,我的应用程序就会崩溃,并显示 EXC_BAD_ACCESS 我已经将它追溯到一行代码,即我的 popToRoot - 基本上在填写表格并保存它的最后我想将视图重置为默认值,这是我迄今为止成功使用这行代码的原因.

代码如下所示:

[self.navigationController popToRootViewControllerAnimated:NO];

加上一些 NSLog'ing,它看起来像这样:

NSLog(@" self.navCon is %@", self.navigationController);
                NSArray *myControllers = self.navigationController.viewControllers;
                NSLog(@"myControllers Content is %@", myControllers);
                NSLog(@"myControllers Count is %i", myControllers.count);
                [self.navigationController popToRootViewControllerAnimated:NO];

而我的登出方式是这样的:

2013-11-10 00:21:32.480 trainForTri copy[9552:a0b]  self.navCon is <UINavigationController: 0xb5bf580>
2013-11-10 00:21:32.481 trainForTri copy[9552:a0b] myControllers Content is (
    "<SGK_T4T_01SecondViewController: 0xbaeac00>",
    "<AddSessionSessTypePicker: 0xb5e51e0>",
    "<SGK_T4T_01SecondViewController: 0xbb5fa00>"
)

我注意到我的 viewController 数组中的第一个和第三个 viewController 是同一个视图,但是为什么它到现在为止都可以在所有操作系统上工作呢?更重要的是,有什么想法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

你用过 arc 吗? 检查您在 xcode 5 中的摘要设置。可以更改任何内容。 视图控制器的释放对象问题

【讨论】:

【参考方案2】:

请查看您是否遵循以下几点:

    在调用popToRootViewControllerAnimated: 之前确认RootViewController 确实存在。如果它在某处死掉,调用该方法将导致崩溃。 检查您上次查看的– viewWillDisappear:– viewDidDisappear: 方法,以确保您没有在那里做危险的事情。 检查视图及其控制器的dealloc 方法,以确保您不会过度释放某些内容。 尝试使用 NSZombie 找出过度释放的对象。

【讨论】:

以上是关于popToRootViewControllerAnimated 在 IOS 7 sim 上的 Xcode5 中使 App 崩溃的主要内容,如果未能解决你的问题,请参考以下文章