0

我有这个我无法弄清楚的错误,它让我的头受伤。所以,基本上,在我的 iphone 应用程序中,我有 UITabBar 和一些标签,每个标签里面都有 UINavigationControllers。

像这样的东西:

    someViewController *someController = [[someViewController alloc] myInit];
    UINavigationController *someNav = [[UINavigationController alloc] initWithRootViewController:someController];
    tab = [[UITabBarController alloc] init];
    tab.viewControllers = [NSArray arrayWithObjects:otherNav, otherNav, evilNav, nil];
    [window addSubview:tab.view];

因此,为了重现我的“宝贵”错误,我这样做:

click evilNav tab 
-> push tableListView (category list)
-> push otherTableListView (category items list) 
-> push someOtherView (single item)
-> popToRoot || popToController withindex:0 || click on evilNav tab again || pop to otherTableListView -> pop to tableListView
-> crash (with no notable error)

因此,如果我走到 someOtherView 这么远,我就无法在应用程序崩溃的情况下返回第一个 tableListView (rootViewController)。同时,我可以转到其他选项卡,然后甚至单击 evilNav(当它处于 otherTableListView 或 someOtherView 状态时)而不会崩溃。

什么可能导致这个问题?(如果你需要我会发布更多代码)

4

3 回答 3

1

我们需要查看推送和弹出的代码。不过,这似乎是一个内存问题。您可能会在第一个视图控制器弹出时释放它,即使您还没有完成它。

于 2009-08-12T14:11:43.943 回答
1

如果没有你发布更多代码,我真的不能说,但如果我不得不猜测,我会说你正在发布你不应该发布的东西,然后尝试再次访问它通常会崩溃而没有错误。

于 2009-08-12T14:39:35.567 回答
0

这可能是由于您声明私有成员的方式。

我的答案实际上嵌入在我在这里发布的问题中:UINavigationController crash because of push and poping UIViewControllers

于 2010-05-11T00:19:39.790 回答