我有一个包含6个View Controller的故事板及其各自的视图。我 NOT 有任何与这6个视图控制器关联的导航控制器。
要从一个视图控制器转到另一个视图控制器,滑动手势识别器与模态segue一起使用。所有视图控制器都有更改1,有时甚至两个基于滑动手势的模态segues到其他视图控制器。
我的问题是,我需要担心记忆吗?当我滑动这些viewcontrollers将无限添加到内存最终导致应用程序崩溃?
一个例子可能是:假设我在第一个VC中,我向右滑动到第二个VC,然后再次滑动到右到第三个VC,然后向左滑动两次以返回到第一个VC将内存包含此:
内存:第一个VC,第二个VC,第三个VC,第二个VC的另一个副本,第一个VC的另一个副本?
我知道这似乎是一个愚蠢的问题,但由于我几天前才开始编程,我很担心会遇到内存问题。
我将非常感谢您的想法以及任何可能有用的链接,以指向讨论此问题的地方。
答案 0 :(得分:1)
你有一个很好的问题,这取决于你如何创建和解雇你的视图控制器。通常,您提到的设计将使用内置控制器(如UINavigationController或UIPageViewController)或使用scrollview构建。
如果要“呈现”新的视图控制器,则需要关闭以删除它们。如果您不解雇,那么您查看控制器将会坚持下去。
如果您使用的是segue,请记住每个segue都会创建一个新实例。
如果你的逻辑通常说 - 向右滑动:新的模态segue,向左滑动:解雇,然后你将随时清理。如果可以,每次右键滑动都会创建一个新实例。
如果您需要六个视图控制器始终保留在内存中,您可能需要查看使用pageViewController或滚动您自己的解决方案。我已经看到了一些很好的解决方案,就像你用滚动视图描述的那样。
如果你想使用滚动视图,基本上你会创建一个数组,用视图控制器的六个实例加载数组,然后加载滚动视图进行水平滚动。为左/右滑动添加手势识别器和逻辑,你有一个漂亮的水平页面滚动器。
这是一个非常好的参考和教程,似乎可以解决您所描述的解决方案。 http://www.wannabegeek.com/?p=168
祝你好运,新年快乐。答案 1 :(得分:0)
只要您不对视图(或其子视图,如按钮......)保持强引用,如果需要,它们将被取消分配。