Storyboard+Modal Segue + Memory



我有一个storyboard与6视图控制器和他们各自的视图。我做没有有任何导航控制器与这6个视图控制器相关联。

要从一个视图控制器转到另一个视图控制器,滑动手势识别器与模态segue一起使用。所有视图控制器都至少有一个,有时甚至有两个基于滑动手势的模态segue到其他视图控制器。

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

一个例子可以是:假设我在第一个VC中,我向右滑动到第二个VC,然后再次向右滑动到第三个VC,然后向左滑动两次回到第一个VC,内存会包含这个吗?

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

我知道这似乎是一个愚蠢的问题,但因为我几天前才开始编程,我非常担心我会有内存问题。

我将感谢你的想法和任何可能有帮助的链接到讨论这个问题的地方。

你有一个很好的问题,它取决于你如何创建和解散你的视图控制器。通常你提到的设计会使用内建控制器比如UINavigationController或UIPageViewController或者使用滚动视图。

如果你正在"呈现"新的视图控制器,那么你需要通过解散来移除它们。如果你没有解散,那么你的视图控制器会留下来。

如果你正在使用segue,记住每个segue创建一个新的实例。

如果你的逻辑通常说-向右滑动:new modal segue,向左滑动:解散,那么你将在你进行的过程中进行清理。如果每次向右滑动创建一个新实例,则此操作有效。

如果你需要六个视图控制器一直留在内存中,你可能想要使用pageViewController或滚动你自己的解决方案。我看过一些不错的解决方案,比如你描述的使用滚动视图。

如果你想使用滚动视图,基本上你会创建一个数组,用你的视图控制器的六个实例加载数组,然后为水平滚动加载滚动视图。添加手势识别器和左/右滑动的逻辑,你就有了一个不错的水平页面滚动条。

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

祝好运,新年快乐。

只要你不保留对视图(或它的子视图,如按钮…)的强引用,它们将在需要时被释放。

最新更新