ios - 如何处理跳回 iOS 中的先前屏幕

标签 ios memory-management memory-leaks uiviewcontroller

我只是想在这里进行完整性检查。

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

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

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

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

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

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

感谢任何输入。

最佳答案

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

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

如果您需要支持 iOS 5,您可以考虑使用导航 Controller ,但如果您不喜欢用户界面中的导航栏,请隐藏它。然后用推送 segues 替换模态 segues,现在你可以在你想返回主视图 Controller 时执行 popToRootViewController

关于ios - 如何处理跳回 iOS 中的先前屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13996174/

相关文章:

c - 我在哪里泄漏内存? (Valgrind) 一个 block 中丢失了 24 个字节

c++ - Valgrind 在不终止程序的情况下检测内存泄漏

ios - 如何使用 Alamofire 从数组中获取数据以显示在 Collection Cell 中?

ios - CABasicAnimation 中的内存泄漏

ios - 如何在以模态方式呈现的 View Controller 上执行当前模态序列?

c - 如何在main()之外使用 `malloc`?

Java 内存泄漏 - 在程序终止时清除?

c++ - 将进程内存转储到磁盘以分析内存泄漏

ios - 如何将 UIImages 数组添加到 Collection View

ios - 未应用导航栏中标题的描边文本属性