也许我一直在研究这个时间太长;)我的应用程序有一个导航控制器和几个ViewControllers。从rootviewController加载的ViewController之一(MainViewController)中,我有以下代码。 PushViewController到DataviewController和Back(例如,按下),应用程序崩溃了。

DataviewController加载正常,但是当敲击导航controller的后背按钮时,应用程序会崩溃,而对象异常。如果我删除:

[dataViewController release];

该应用程序正常。这很奇怪,因为DataviewController以相同的方法启动。有任何想法吗?

- (void) locationPage 
{

    [[NSNotificationCenter defaultCenter] postNotificationName:@"NotifyRemoveMap" object:nil];
    MyAppDelegate *app = [[UIApplication sharedApplication] delegate];

    UINavigationController *navigation = app.navigationCantroller;
    [navigation popToRootViewControllerAnimated:NO];

    DataViewController *dataViewController = [[DataViewController alloc] initWithNibName:@"DataView" bundle:nil];
    [dataViewController setCategoryId:category];

    MyLanguage *lang = app.lang;
    Mylocation *location = [lang locationForCategoryId:category];

    dataViewController.title = location.name;
    NSArray *locationArray = [lang locations];

    dataViewController.locations = locationArray;
    [navigation pushViewController:dataViewController animated:YES];
    [dataViewController release]; //  With this removed, app doesn't crash
}
有帮助吗?

解决方案

甚至还没有阅读您的帖子。如果是exec-bad-access,我有2个单词给您:

启用nszombies。

请遵循此链接:(它说明了您需要知道的一切来解决任何不良访问问题)

使用NSZOMBIE和乐器的电话记忆调试

干杯!

其他提示

当DataviewController弹出并且您尝试访问它的某些内容时,可能会出现问题 - 然后已经发布。您可以检查控制台以获取更多详细信息 - 更好,以调试模式运行(调试配置 与调试器一起运行)。

您可以编辑您的问题以显示带有返回按钮的一些代码。

你谈论发布 dataViewController 但是您的代码说 detailsViewController. 。您是否错误地复制并粘贴了,还是错误?

您应该考虑不使用 app.navigationControllerself.navigationController. 。清洁器设计。对应用程序委托的依赖性较小,该代表人经常被用作弗兰肯斯坦(Frankensteinob),知道太多了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top