[英]Will deinit gets called when a view controller gets disappeared?
我创建了两个像这样的视图控制器
Navigation controller -> View Controller -> Details View Controller
1 2 3
(2)View Controller中有一个按钮,单击该按钮将显示(3)Details View Controller。 我创建了一个从按钮到(3)VC的序列。
我在这两个类中添加了deinit
块。
deinit {
print("vc deinit")
}
但是,这不会被记录。 视图控制器何时会被释放?
在这种情况下,每当您单击导航上的后退按钮(弹出到前一个视图控制器)时,唯一deinit
是第二个(在Details View Controller
实现的)。
那么,为什么没有调用第一个deinit
(在View Controller
)?
那是因为它是导航控制器堆栈中的第一个视图控制器。 推送到第二个视图控制器并不意味着先前的一个或多个已经被释放,并且仍然作为导航堆栈中的第一个元素存在; 例如,这就是为什么当您从弹出的视图控制器返回时,不应调用viewDidLoad
方法的原因,这意味着它没有被释放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.