取消初始化呈现的视图控制器

Deinitialize presented view controller

我有下一个功能

func switchRootViewController(rootViewController: UIViewController) {
    let window = UIApplication.shared.windows.first!
    window.rootViewController = rootViewController
    window.makeKeyAndVisible()
}

我在呈现的视图控制器中使用它,例如在 PresentedViewController 中。

let navigationViewController = UINavigationController(rootViewController: PresentedViewController())
present(navigationViewController, animated: true, completion: nil)

但是当我切换到所需的视图控制器时,我呈现的视图控制器没有取消初始化。不得不这样用,先解散:

self.dismiss(animated: true, completion: {
    switchRootViewController(rootViewController: HomeViewController.instantiate())
}) 

而不是简单的

switchRootViewController(rootViewController: HomeViewController.instantiate())

UIViewController 个对象在另一个 UIViewController 呈现时被保留。要释放你的视图控制器,它们需要从视图层次结构中移除,你可以通过关闭它们来完成。至于在哪里关闭您的视图控制器,我不确定,因为您没有提供足够的信息。但是你需要关闭任何你想从内存中释放的视图控制器。