presentViewController会导致内存耗尽吗?

时间:2016-01-11 21:01:31

标签: ios swift

有些事我误解了。我目前正在使用Swift开发应用程序。为简化处理它的多个开发人员,该项目分为多个故事板。当应用程序启动时,我们使用App Delegate来确定是否提供教程。

无论选择哪个视图,我们都会实例化故事板,然后是初始视图控制器:

// Show the Welcome Tutorial
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

let initialStoryboard: UIStoryboard = UIStoryboard(name: "WelcomeTutorial", bundle: nil)

let initialViewController: TutorialVC = initialStoryboard.instantiateViewControllerWithIdentifier("TutorialVC") as! TutorialVC

self.window?.rootViewController = initialViewController

self.window?.makeKeyAndVisible()

然后,当我们想要移动到不同的故事板时,我们使用相同的代码,但用presentViewController替换最后两行。但是,据我所知,这是在构建一个堆栈。我们永远不会调用dismissViewController或返回到前一个视图控制器,因此可以将其解除。有没有更好的方法来做到这一点而不创建堆栈?我担心堆栈会浪费内存。我可以通过故事板引用获得segues,但我不知道这是否会产生同样的问题。

1 个答案:

答案 0 :(得分:0)

你是对的。在呈现您所描述的视图控制器时,您正在构建堆栈。如果您不再需要模态视图控制器,请将其关闭。如果需要将窗口的根控制器换出另一个控制器,请分配一个新控制器并让旧控制器死掉。一如既往,注意强有力的参考!