简单代码上的EXC_BAD_ACCESS

时间:2011-07-06 14:21:38

标签: ios uinavigationcontroller uitabbarcontroller exc-bad-access

这是代码:

UITabBarController *tbc = [[UITabBarController alloc]init];
tbc.viewControllers = [NSArray arrayWithObjects:ptlc,cvc,gvc,nil];
[self.navigationController pushViewController:tbc animated:YES];
[tbc release];

这是tableView中的代码的最后一部分:didSelectRowAtIndexPath:。当选择行时,UITabarController显示正常,但是当点击UINavigationController上的“后退”按钮时,程序在一秒钟后崩溃而不在控制台上打印任何描述。调试器只是指向“线程1:程序接收信号:”EXC_BAD_ACCESS“。”在这一行:

 int retVal = UIApplicationMain(argc, argv, nil, nil);

在“main.m”上。令人难以置信的是,删除最后一行解决了这个问题。 ptlc cvc和gvc是我首先分配的控制器,我在此代码示例的最后一行之后发布。

2 个答案:

答案 0 :(得分:2)

使用配置文件工具“zombies”解决了这个问题。它向我展示了UIImage在被解除分配后正在接收释放消息。这是因为我在UITabBar上为两个不同的UITabBarItem使用相同的UIImage。

答案 1 :(得分:0)

因为代码没有任何明显的错误,记忆明智;它让我相信它正在发生,因为你不应该在UITabBarController堆栈中使用UINavigationController作为viewcontroller。来自UITabBarController上的Apple文档:

在创建标签栏界面之前,您需要决定打算如何使用它。因为它对您的数据强加了一个总体组织,所以只有少数适​​当的方法可以使用标签栏界面:

  • 直接在应用程序的主窗口中安装。
  • 在拆分视图界面中将其安装为两个根视图之一。 (仅限iPad)
  • 以模态方式呈现它以显示需要其自己的基于模式的组织的一些数据。
  • 从弹出窗口显示它。 (仅限iPad)