切换视图控制器时的 EXEC_BAD_ACCESS (code=1 address=0x90000008)
Posted
技术标签:
【中文标题】切换视图控制器时的 EXEC_BAD_ACCESS (code=1 address=0x90000008)【英文标题】:EXEC_BAD_ACCESS (code=1 address=0x90000008) when switching view controllers 【发布时间】:2012-06-07 01:31:47 【问题描述】:所以,我有一个使用 tableViewController 来填充不同游戏类型列表的应用程序。当一个游戏被选中时,它会使用该名称执行一个 segue。
在我为其中一种游戏模式完成添加统计菜单之前,这一切正常(正确推送和弹出)。
现在,当我从 stats 菜单切换回 tableViewController 时,有时会出现 EXEC_BAD_ACCESS 错误。所以:
TVC ---> 游戏 ---> 统计数据
然后
统计 ---> TVC
从 TVC 切换到游戏的代码:
NSString* a = (NSString*)[games objectAtIndex:indexPath.row];
a = [a stringByReplacingOccurrencesOfString:@" " withString:@""];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self performSegueWithIdentifier:a sender:self];
从游戏切换到统计菜单的代码:
[self performSegueWithIdentifier:@"Stats" sender:self];
从统计菜单切换到 TVC 的代码(出现问题的地方):
NSArray* controllers = self.navigationController.viewControllers;
int a = [controllers count] - 1;
[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:a-2] animated:YES];
Error in question
Link to Code
【问题讨论】:
exec_bad_access 几乎没有告诉我们任何信息,只是试图访问一个无效对象。你在用ARC吗?是否也启用了异常断点? ARC 关闭了,还有什么异常断点? 其实是EXC_BAD_ACCESS
(马赫例外)
看这个问题的第一个答案:***.com/questions/10212677/…
如果您不使用 ARC,请确保您已启用 NSZombies。在 Xcode 4 中:编辑方案 -> 诊断 -> 启用僵尸对象
【参考方案1】:
尝试分析您的代码以查看是否存在任何内存泄漏。这可能是您的应用程序崩溃的原因。
【讨论】:
切换到 ARC 以避免分配/释放问题【参考方案2】:看起来苹果现在正试图强制执行 ARC。我刚刚下载了 10.7 SDK 的更新,它使我的程序(其中还包含 performSegueWithIdentifier:) 超级错误,并在我之前解决的多个问题上抛出 EXC_BAD_ACCESS(SDK 更新前)。我打开了 ARC,并注释掉了我所有的 release/dealloc 调用,它恢复了工作状态。很好,我想调试器如何将您指向它们所在的位置。 :)
【讨论】:
以上是关于切换视图控制器时的 EXEC_BAD_ACCESS (code=1 address=0x90000008)的主要内容,如果未能解决你的问题,请参考以下文章
重新加载包含 UITableView 的 UIViewController 时的 EXEC_BAD_ACCESS
从 Tab View Controller 切换到滑动手势时的 iOS Xcode 问题