我有一个故事板,其中包含6个视图控制器及其各自的视图。我确实没有与这6个视图控制器相关联的任何导航控制器。

为了从一个视图控制器转到另一个视图控制器,将滑动手势识别器与模式搜索结合使用。所有视图控制器的高度至少为1,有时甚至是两个其他视图控制器的基于滑动手势的模式选择。

我的问题是,我需要担心记忆吗?当我滑动时,这些viewcontrollers是否将无限添加到内存中,最终导致应用程序崩溃?

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

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

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

非常感谢您的想法以及对解决此问题的地方的任何可能有用的链接。

最佳答案

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

如果要“呈现”新的视图控制器,则需要关闭以将其删除。如果您不解雇,则您认为控制器将一直存在。

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

如果您的逻辑通常说-向右滑动:新的模态搜索,向左滑动:关闭,那么您将在清理过程中进行清理。如果每个右向滑动都可以创建一个新实例,这可以工作。

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

如果要使用滚动视图,则基本上可以创建一个数组,使用视图控制器的六个实例加载该数组,然后加载滚动视图以进行水平滚动。添加手势识别器和左右滑动的逻辑,您将获得一个不错的水平页面滚动器。

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

祝你好运,新年快乐。

10-07 20:03
查看更多