有一点我误解了。我目前正在使用 Swift 开发一个应用程序。为了简化多个开发人员的工作,该项目被分成多个 Storyboard。当应用程序启动时,我们使用 App Delegate 来确定是否显示教程。
无论选择哪个 View ,我们都实例化 Storyboard,然后实例化初始 View Controller ,如下所示:
// 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()
然后,当我们想移动到不同的 Storyboard时,我们使用相同的代码,但将最后两行替换为 presentViewController。但是,据我了解,这是在构建堆栈。我们永远不会调用 dismissViewController 或返回到之前的 View Controller ,因此它可以被关闭。有没有更好的方法可以在不创建堆栈的情况下执行此操作?我担心堆栈正在浪费内存。我可以让 segues 与 Storyboard 引用一起工作,但我不知道这是否会产生同样的问题。
最佳答案
你是对的。当像您描述的那样呈现 View Controller 时,您正在构建一个堆栈。如果您不再需要模态视图 Controller ,请关闭它。如果窗口的根 Controller 需要换成另一个,分配一个新的并让旧的死掉。一如既往,注意强引用!
关于ios - presentViewController会不会导致内存耗尽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730996/