自从我开始进行 iOS 开发以来,这个问题就一直在我脑海中萦绕:UINavigationController
和内存的使用。
我看到很多应用程序,如 iMail、查找 friend 、笔记等,其中 UINavigationController 非常适合。它们允许您向下钻取两层或三层层次结构,仅此而已。
但想象一下从根文件夹开始浏览一个深层层次结构,例如 Mac 的文件系统。 如果我使用 UINavigationController,我会继续将数百个 Controller 插入堆栈(最坏的情况)。我不认为这是一个很好的用法。在某些情况下,推送的 Controller 可能会变得非常重(就内存而言)并且它们只是无所事事地坐在那里。
我希望 UINavigationController 有一个“动态”版本:它只会告诉您在返回层次结构时要创建什么,而不是仅仅弹出层次结构。
我现在的问题是:UINavigationController 是否用于深层层次结构?如果您想要所有的动画、栏项目等,有什么好的选择? 还是我看到了根本没有的问题?
最佳答案
UINavigationController
是动态的。当内存不足时,您可以释放不可见的层次结构部分使用的内存——当您收到内存不足通知时,这是一个手动步骤——操作系统会在相同情况下自动释放 View 。
当顶 View Controller 从堆栈中弹出时,您的 viewDidLoad
方法将被调用,允许您重新创建 View 。
如果这确实是个问题,iOS5 允许您创建自己的“容器” View ,因此您可以创建自己的导航 Controller ,完全按照您的建议进行操作。查看 UIViewController
文档的“实现容器 View Controller ”部分。
话虽如此,您可能需要添加一些快捷方式来绕过非常深的层次结构。如果一次只能返回一个屏幕,用户界面可能会很痛苦。
关于objective-c - 内存使用 : when does it make sense to use a UINavigationController and when not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8879701/