ios - 将 UIViewControllers 保存在内存中

标签 ios objective-c iphone uiviewcontroller

我正在构建一个 iOS 应用程序,其中一个“汉堡菜单”类型的抽屉可以打开左侧的选项列表。像这样:

Not actually my app / photo

每次你点击一个项目,例如“设置”,它会加载一个新的 View Controller 并将其显示在主视图 Controller 上。现在,我想知道的问题是每次单击菜单中的新项目时我是否应该释放 View Controller 。

例如:

  • 您正在查看收件箱
  • 您点击“设置”
  • 我释放 InboxViewController 并分配初始化 SettingsViewController
  • 我将 SettingsViewController 设为主视图 Controller

我想将所有 View Controller 保存在内存中,因为我认为如果之前已分配它,它将提供从一个 View Controller 到下一个 View Controller 的更平滑过渡,而不必每次都等待分配它。

我正在使用 ARC

这是不好的做法吗?我的内存中可能有 6-7 个 View Controller 。

最佳答案

查看 SDK,Apple 做出了两种选择:UINavigationController 将整个 VC 堆栈保持在顶部以下,而 UIPageViewController 积极释放除当前页面之外的任何页面。

这是一个“速度/空间”交易的例子。预计算和缓存对象会更快(一旦运行)但占用更多内存。更积极地发布和构建(或重建)将产生一些运行时间成本但占用更少的内存。

这个问题也可能是一个优化过早或不必要的例子。对于少数典型的 VC,分配速度很快,内存占用量(应该)很小。改变方法可能对速度或空间影响不大。

我将从更简单的方法开始(可能允许被动释放 VC 更简单),看看是否有需要解决的明显问题。

关于ios - 将 UIViewControllers 保存在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457693/

相关文章:

ios - 在另一个 View 中嵌入自定义 View 的正确 MVC 结构是什么?

iphone - 以编程方式设置引用 socket

iphone - 不能在 iOS 上包含 FMOD

iOS 7 过渡 - XCode 5 - Interface Builder - Three20

ios - 如何将数据从两个 UITextView 保存到 UserDefaults

objective-c - 奇怪的 EXC_Crash (SIGKILL) 错误报告

ios - 如何在uiimage中心设置文字?

ios - 如何检查我的NSMutableOrderedSet中是否存在我的NSString?

iPhone : little problem of memory leak with NSTimer

iphone - 使固定大小的圆形按钮作为iPhone SDK中的图像