在我的应用程序中,我正在实例化新的 View Controller 而不是使用 segues,因为它在动画中看起来更好,因此我的 View 在后台继续运行。这会导致大量内存泄漏。
我返回主屏幕的代码是:
let mainStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let vc : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainScreen") as UIViewController
self.presentViewController(vc, animated: false, completion: nil)
此 View Controller 在后台仍然处于事件状态,因此不应再次实例化。我该怎么做。
当我使用上面的代码关闭我的 View Controller 时,它也没有卸载它,它继续在后台运行。如何让它在屏幕消失后立即卸载。
我试过
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
view.removeFromSuperview()
view = nil
}
但是这不能正常工作。以这种方式退出 View Controller 时,如何从内存中正确销毁 View Controller 。
最佳答案
你只需要使用:
编辑 Swift 4.2
self.dismiss(animated:true, completion: nil)
剩下的工作由 ARC 完成
为了在调试期间帮助您,您还可以添加以下代码:
if let app = UIApplication.shared.delegate as? AppDelegate, let window = app.window {
if let viewControllers = window.rootViewController?.children {
for viewController in viewControllers {
print(viewController.debugDescription)
}
}
}
关于ios - 实例化新 View Controller 时从内存中删除 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36920859/