这是代码:
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是我首先分配的控制器,我在此代码示例的最后一行之后发布。
答案 0 :(得分:2)
使用配置文件工具“zombies”解决了这个问题。它向我展示了UIImage在被解除分配后正在接收释放消息。这是因为我在UITabBar上为两个不同的UITabBarItem使用相同的UIImage。
答案 1 :(得分:0)
因为代码没有任何明显的错误,记忆明智;它让我相信它正在发生,因为你不应该在UITabBarController
堆栈中使用UINavigationController
作为viewcontroller。来自UITabBarController
上的Apple文档:
在创建标签栏界面之前,您需要决定打算如何使用它。因为它对您的数据强加了一个总体组织,所以只有少数适当的方法可以使用标签栏界面: