2

我有一个带有 6 个视图控制器及其各自视图的故事板。我没有与这 6 个视图控制器关联的任何导航控制器。

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

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

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

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

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

我会很感激你的想法和任何可能有用的链接到讨论这个问题的地方。

4

2 回答 2

1

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

如果您正在“呈现”新的视图控制器,那么您需要关闭以删除它们。如果您不解雇,那么您的视图控制器将继续存在。

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

如果您的逻辑通常说-向右滑动:新的模态转场,向左滑动:关闭,那么您将在进行时进行清理。如果每次向右滑动都可以创建一个新实例,则此方法有效。

如果您需要六个视图控制器一直保留在内存中,您可能需要考虑使用 pageViewController 或滚动您自己的解决方案。我已经看到了一些不错的解决方案,例如您使用滚动视图描述的。

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

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

祝你好运,新年快乐。

于 2013-01-04T20:43:45.017 回答
0

只要您不保留对视图(或其子视图,如按钮...)的强引用,它们就会在需要时被释放。

于 2013-01-04T20:15:21.477 回答