在我的应用程序中,我实例化新的视图控制器而不是使用 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
}
然而这不能正常工作。以这种方式退出视图控制器时,如何正确地从内存中销毁视图控制器。
您只需要使用:
编辑斯威夫特 4.2
self.dismiss(animated:true, completion: nil)
其余的工作是通过ARC https://en.wikipedia.org/wiki/Automatic_Reference_Counting
为了在调试过程中为您提供帮助,您还可以添加以下代码:
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)
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)