gpt4 book ai didi

ios - 我如何才能插入自己的观点,而不必每次都实例化自己

转载 作者:行者123 更新时间:2023-11-29 02:12:42 25 4
gpt4 key购买 nike

每次我推送它时,我都会实例化我自己的 View 类。

MyOwnView *newSameView = [[MyOwnView alloc]initWithNibName:nil
bundle:NULL];
[self.navigationController pushViewController:MyOwnView
animated:YES];

最佳答案

您问“但是每次我实例化它时它不会分配更多内存吗?”答案是不。它会在您每次创建实例时分配不同的内存,但当您将 View Controller 从堆栈中弹出时,该内存就会被释放。

如果你想保留你的 MyOwnViewController 类的一个实例,那么创建一个“延迟加载” View Controller 的属性,并使用它。

如果这是您的属性(property):

@property (nonatomic, strong) MyOwnViewController * myVC;

setter/getter 看起来像这样:

-(MyOwnViewController *) myVC;
{
if (_myVC == nil)
_myVC = [[MyOwnViewController alloc]initWithNibName:nil bundle:NULL];
return _myVC;
}

然后你可以像这样编写推送 View Controller 的代码:

[self.navigationController pushViewController: self.myVC animated:YES];

这样做的好处是您只需创建一个 MyOwnViewController 实例。不利的一面是,只要创建它的 View Controller 存在,它就永远不会被释放,除非你明确地将它设置为 nil。如果在某个时候您不再需要它,它将占用额外的内存(同样,除非您手动将属性设置为 nil)

另一种方法是在每次需要时创建一个 MyOwnViewController 的新副本,然后在弹出时立即释放它。您需要做更多的工作来创建/销毁 MyOwnViewController 实例,但当您不使用它们时它们不会占用内存。

关于ios - 我如何才能插入自己的观点,而不必每次都实例化自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110335/

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