【发布时间】:2018-05-24 13:42:35
【问题描述】:
我在执行以下操作的应用中发现了内存泄漏:
想象一下两个视图控制器,每个视图控制器调用 appDelegate 中的一个函数,类似这样:
func switchRootViewController() {
let vc = getTheOtherViewController()
self.window?.rootViewController = vc
}
到目前为止,它运行良好 - 显示了另一个 VC,调用该函数的那个被释放了。
但是当您通过以下方式从第一个或第二个 VC 呈现第三个视图控制器时:
present(ThirdViewController(), animated: true)
然后从 ThirdVC 调用 appDelegate 中的上述函数(通过将其设置为 rootViewController 来显示 viewController 一或二),此 ThirdVC 和呈现它的 VC 不会被释放。
知道为什么会这样吗?
如果需要,可以发布示例项目。如果有任何区别,VC 会从情节提要中实例化。
【问题讨论】:
-
"first of second VC via"
-
@Honey 是的,会更正谢谢
-
请添加示例代码
标签: ios viewcontroller presentviewcontroller deinit