gpt4 book ai didi

objective-c - UINavigationController 和 UIViewController 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 03:55:22 25 4
gpt4 key购买 nike

我正在学习 UINavigationControllerUIViewController。这是我构建的简单应用程序。请注意,我使用的是 ARC。

我的应用有一个导航 Controller 和两个 View Controller (我们称它们为 FirstViewControllerSecondViewController)。当应用程序启动时,导航 Controller 将 FirstViewController 插入堆栈。

FirstViewController 中,我有一个按钮,它在触摸时插入 SecondViewController。这是一些代码。

FirstViewController.m

-(IBAction)pushSecondViewController
{
SecondViewController *secondViewController = [SecondViewController alloc]init];
[self.navigationController pushViewController:secondViewController animated:YES];
}

在第二个 View Controller 中,我有一个按钮可以从堆栈中弹出当前 View Controller 。

SecondViewController.m

-(IBAction)popViewController
{
[self.navigationController popViewControllerAnimated:YES];
}

到目前为止,还不错。这是我的问题:

navigationController 是否检查 SecondNavigationController 的现有实例,如果不存在则创建一个新实例?

如果不是,我是否应该使用单例来确保只创建和重用一个实例,而不是每次按下按下 SeconViewController 的按钮时都创建一个新实例?

最佳答案

使用您当前的代码,第二个 View Controller 将在从堆栈中弹出时被销毁,所以不,导航 Controller 不会重新使用它。

如果你真的想保留第二个 View Controller ,让它成为第一个 View Controller 的强属性,但不要这样做,除非你确实有理由这样做 - 你使用的方法是标准的并且创建一个新的 View Controller 通常比使用甚至不在屏幕上的 View Controller 占用大量内存更受欢迎。内存比处理器资源更稀缺,创建 View Controller 一直在发生。

关于objective-c - UINavigationController 和 UIViewController 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com