在实例化新视图控制器时从内存中删除视图控制器

在我的应用程序中,我实例化新的视图控制器而不是使用segues,因为它在动画中看起来更好,因此我的视图在后台继续运行。 这会导致大量内存泄漏。

我回到主屏幕的代码是:

let mainStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) let vc : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainScreen") as UIViewController self.presentViewController(vc, animated: false, completion: nil) 

此视图控制器在后台仍处于活动状态,因此不应再次实例化。 我该怎么做呢。

当我使用上面的代码关闭我的视图控制器时,它也不会卸载它,它会一直在后台运行。 屏幕消失后,如何将其卸载。

我试过了

 override func viewDidDisappear(animated: Bool) { super.viewDidDisappear(animated) view.removeFromSuperview() view = nil } 

但是这不能正常工作。 以这种方式退出视图控制器时,如何从内存中正确销毁视图控制器。

你只需要使用:

 self.dismissViewControllerAnimated(true, completion: {}) 

其余的工作是由ARC完成的

为了在调试期间为您提供帮助,您还可以添加以下代码:

 if let app = UIApplication.sharedApplication().delegate as? AppDelegate, let window = app.window { if let viewControllers = window.rootViewController?.childViewControllers { for viewController in viewController print(viewController.debugDescription) } } }