【发布时间】:2016-08-23 13:59:49
【问题描述】:
在我的应用程序中,我正在实例化新的视图控制器而不是使用 segue,因为它在动画中看起来更好,因此我的视图继续在后台运行。这会导致大量内存泄漏。
我返回主屏幕的代码是:
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
}
但是这不能正常工作。以这种方式退出视图控制器时,如何从内存中正确销毁视图控制器。
【问题讨论】:
-
您不能从内部移除视图控制器(即 viewDidDisappear) - 您需要做的是移除对它的所有引用,此时
ARC将释放它。如果您引用它的唯一位置是在上面创建它时,那么只需在呈现它的任何内容上调用dismissViewController,就可以释放您的视图控制器。
标签: ios swift memory-leaks