【发布时间】:2017-02-01 08:23:10
【问题描述】:
我想释放 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")
})
})
此代码成功呈现newVC,并在关闭oldVC 后打印done。但是,我的记忆力仍然保持在屏幕上显示oldVC 时的水平。
我做错了什么?
仅供参考
- 我正在使用ENSwiftSideMenu
- 由于我没有让它以不同的方式工作,我所有的 ViewController 都是 ENSideMenuNavigationController 的子类
- 我收到关于分离视图和视图不在窗口层次结构中的控制台警告
- 对于所有 ViewController,
presentingViewController和presentedViewController都是nil
【问题讨论】:
-
oldVC的参考是什么?
-
“参考”是什么意思?它是一个全局变量,在每个 ViewController 的
viewWillAppear(_:)方法中设置为self。因此,它的类型为 `UIViewController -
尝试添加这一行 deinit { debugPrintln("Clean") }
-
添加到 oldVC 的代码中?
-
是的,在这种情况下,我们可以看到 oldVC 何时会真正被处理
标签: ios swift uiviewcontroller dismiss