据我了解,当推送新的pushViewController时,应该释放旧的viewController吗?

在这里,我只是创建了两个不同的viewControllers并将其推送。

    UINavigationController *navController = [[UINavigationController alloc] init];
    [self.window addSubview:navController.view];

    smallLayout = [[SmallViewController alloc] init];
    [navController pushViewController:smallLayout animated: NO];
    [smallLayout release];

    largeLayout = [[LargeViewController alloc] init];
    [navController pushViewController:largeLayout animated: NO];
    [largeLayout release];

SmallViewController中,永远不会调用dealloc,并且当我检查保留计数时它仍然为1。我正在检查循环运行很久之后的保留计数,而且我也知道保留计数不是您应该信任的东西。

最佳答案

不,不应该...

导航控制器会维护所有推到其上的视图控制器的导航堆栈...因此,当您返回或弹出当前视图控制器时,前一个控制器仍然存在。

弹出后,导航控制器将释放视图控制器。

关于iphone - pushViewController是否应在推送新的时释放oldController?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5815509/

10-12 00:15