Lin*_*rth 13 uiviewcontroller dismiss ios swift
我想释放我的ViewController在解除它后使用的内存.我使用以下代码来呈现新的ViewController并解除旧的ViewController:
let sB: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newVC: UIViewController = sB.instantiateViewController(withIdentifier: "MyVC")
self.present(newVC, animated: true, completion: { x in
oldVC.dismiss(animated: false, completion: { _ in //oldVC: variable keeping track of currently visible view controller
print("done")
})
})
Run Code Online (Sandbox Code Playgroud)
此代码在解雇后成功显示newVC和打印.但是,我的记忆仍然保持在屏幕上的高度.
我究竟做错了什么?doneoldVColdVC
presentingViewController和presentedViewController有nil检查以下问题:
解:
UINavigationController并使用setViewControllers来管理ViewController的过渡。oldVC如果真的不明白。您可以搜索:
你的oldVC不会被释放,因为你的newVC(和任何UIViewController)默认保留对其的强引用presentingViewController- 呈现它的控制器。如果不是这种情况,您将永远无法newVC在不干扰视图层次结构的情况下安全地关闭您的视图。
就您的具体问题而言,为了释放您的旧视图控制器,我建议您取消第一个视图控制器,oldVC然后newVC从堆栈中较早的另一个 ViewController 显示您的视图控制器(可能是UIApplication shared().keyWindow?.rootViewController)
| 归档时间: |
|
| 查看次数: |
3021 次 |
| 最近记录: |