0

我只是在这里寻找健全性检查。

我有一个用户在进入主应用程序的途中经过的屏幕。该屏幕几乎可以从系统中的任何位置导航回。

就目前而言,我只是在展示 ViewController 而不使用 NavController 来管理它们(它似乎不适用于我的大多数应用程序,因为屏幕不一定是连续的或彼此相关的)。

我的问题是,如果我展示了 VC1,然后导航到其他屏幕,最后想再次展示 VC1,我正在做类似的事情:

[self presentViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"VC1"] animated:YES completion:nil];

这是不好的形式吗?我是通过创建一堆 VC1 实例来泄漏内存,还是有一些使用先前创建的实例的魔法?

如果它是坏的形式,我如何回到原来的 VC1 来重用它?

感谢您的任何意见。

4

1 回答 1

2

我想你已经确定了:在内存中同时拥有同一个视图控制器的多个实例并不是一个好主意。每次实例化一个新的视图控制器并以模态方式呈现它时,都会消耗更多的内存。

最优雅的解决方案是 iOS 6 unwind segue。但我们大多数人还不愿意放弃对 iOS 5 的支持。

如果你需要支持 iOS 5,你可以考虑使用导航控制器,但如果你不喜欢在你的用户界面中隐藏导航栏。然后用 push segues 替换模态 segues,现在您可以popToRootViewController随时返回主视图控制器。

于 2012-12-21T19:56:10.153 回答