TZE*_*000 9 memory-leaks ios swift
在我的应用程序中,我实例化新的视图控制器而不是使用segues,因为它在动画中看起来更好,因此我的视图在后台继续运行.这会导致大量内存泄漏.
我回到主屏幕的代码是:
let mainStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let vc : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainScreen") as UIViewController
self.presentViewController(vc, animated: false, completion: nil)
Run Code Online (Sandbox Code Playgroud)
此视图控制器在后台仍处于活动状态,因此不应再次实例化.我该怎么做呢.
当我使用上面的代码关闭我的视图控制器时,它也不会卸载它,它会在后台运行.屏幕消失后,如何将其卸载.
我试过了
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
view.removeFromSuperview()
view = nil
}
Run Code Online (Sandbox Code Playgroud)
但是这不能正常工作.以这种方式退出视图控制器时,如何从内存中正确销毁视图控制器.
Ale*_*ano 11
你只需要使用:
编辑Swift 4.2
self.dismiss(animated:true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
其余的工作是由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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12128 次 |
| 最近记录: |