当推送一个新的时,pushViewController应该释放oldController吗?

Dav*_*vid 1 iphone objective-c ipad ios4 ios

根据我的理解,当推出一个新的时候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];
Run Code Online (Sandbox Code Playgroud)

SmallViewControllerdealloc中永远不会被调用,当我检查保留计数时它仍然是1.我在运行循环完成后检查保留计数很长时间我也知道保留计数不是你应该信任的东西.

Swa*_*uke 5

不,不应该....

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

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