Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将UIViewController保留在内存中_Ios_Objective C_Iphone_Uiviewcontroller - Fatal编程技术网

Ios 将UIViewController保留在内存中

Ios 将UIViewController保留在内存中,ios,objective-c,iphone,uiviewcontroller,Ios,Objective C,Iphone,Uiviewcontroller,我正在构建一个iOS应用程序,其中有一个“汉堡包菜单”类型的抽屉,可以打开左侧的选项列表。像这样: 每次单击项目(例如“设置”)时,它都会加载一个新的viewcontroller并将其显示在主视图控制器上。现在,我想知道的问题是,我是否应该在每次单击菜单中的新项时释放ViewController 例如: 您正在查看收件箱 单击“设置” 我释放InboxViewController和alloc init设置视图控制器 我使SettingsViewController成为主视图控制器 我希望将

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

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

例如:

  • 您正在查看收件箱
  • 单击“设置”
  • 我释放InboxViewController和alloc init设置视图控制器
  • 我使SettingsViewController成为主视图控制器
我希望将所有ViewController都保留在内存中,因为我认为如果以前分配了它,它将提供从一个到下一个的更平滑过渡,而不是每次都要等待分配它

我正在使用ARC


这是坏习惯吗?我的内存中可能有6-7个ViewController。

我不一定认为将所有ViewController都保存在内存中是一件好事,除非视图包含的对象需要很长时间才能获取(即打开UIDocument或从NSURLRequest)


希望有帮助看看SDK,苹果做出了两种选择:
UINavigationController
将整个VCs堆栈保持在顶部以下,而
UIPageViewController
积极发布除当前页面以外的任何页面

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

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


我会从哪种更简单的方式开始(可能让风投被动释放更简单),看看是否有一个明显的问题需要解决。

您使用的是ARC吗?你是否明确地“释放”了对象?@Mike我正在使用Arc加载对象后,它们不会进行任何额外的处理,直到你再次查看它们并对它们执行操作。我想我会试着做一些测试,但从人们的说法来看,似乎一切都会好起来。我同意,我认为你应该没事。