2013-01-04 48 views
2

我有一个故事板6视图控制器及其相应的意见。我做不是有任何导航控制器与这6个视图控制器相关联。故事板+ Modal塞格+内存

要从一个视图控制器移动到另一个视图控制器,轻扫手势识别器将与模态渐变一起使用。所有的视图控制器都有替换1,有时甚至是两个滑动手势模式段落到其他视图控制器。

我的问题是,我需要担心内存吗?当我滑动这些视图控制器将无限添加到内存最终导致应用程序崩溃?

一个例子可能是:说我在第一个VC中,然后向右滑动到第二个VC,然后再次滑动到右到第三个VC,然后向左滑动两次以返回到第一个VC。这个:

内存:第一个VC,第二个VC,第三个VC,第二个VC的另一个副本,第一个VC的另一个副本?

我知道这似乎是一个愚蠢的问题,但因为我只是前几天开始编程我很担心我会遇到内存问题。

我将不胜感激您的想法和任何可能有用的链接,以引用此问题。

回答

1

你有一个很好的问题,这取决于你如何创建和解雇你的视图控制器。通常,像您提到的设计将使用内置控制器(如UINavigationController或UIPageViewController)或可能使用滚动视图来构建。

如果您是“呈现”新的视图控制器,那么您需要解雇以删除它们。如果你不解雇,那么你查看控制器将坚持。

如果您使用的是segue,请记住每个segue会创建一个新实例。

如果你的逻辑通常说 - 向右滑动即可:新模式SEGUE,向左滑动:解雇,那么你将被清理,当您去。这可以工作,如果它确定每个正确的滑动创建一个新的实例。

如果需要六个视图控制器留在记忆的时候,你可能想看看使用您自己的解决方案一个pageViewController或滚动。我已经看到了一些很好的解决方案,例如使用滚动视图描述。

如果你想使用一个滚动视图,基本上你会克里特岛的阵列,装入您的视图控制器的六个实例的数组,然后加载水平滚动条滚动视图。添加左/右滑动手势识别器和逻辑,你有一个很好的水平页面滚动。

这是一个非常好的参考和教程,似乎解决您所描述的解决方案。 http://www.wannabegeek.com/?p=168

祝你好运,新年快乐。

+0

感谢非常有帮助和全面的答案!我实际上有两个滑动手势与2模态segue ..实际上它向右滑动:新的模态赛格,向左滑动(回去):新的模态赛格,这里是我的记忆快速上升的地方。 – jacobronniegeorge

+1

检查我包括的项目。如果你的应用只有6个选项,你可以将它们全部实例化,并在需要时将它们保存在内存中 - 它不是很多,基本上这就是TabBar控制器所做的。理想情况下,只有在需要时才会初始化它们。您可能希望查看委托模式 - 因此您可以轻松解除视图控制器,否则您将继续存在内存问题。 – CocoaEv

0

只要你不保持到视图(或其子视图,如按钮......)强引用,他们将在需要时释放。