deinit在viewDidLoad之前执行

时间:2017-02-08 23:20:02

标签: swift

说“在viewDidLoad之前执行deinit”是没有意义的。如果没有亲眼目睹,我永远不会相信。但是,我的项目(Xcode8和Swift2.3)确实发生了100%。

这有什么理由发生这种奇怪的事吗?

2 个答案:

答案 0 :(得分:1)

当然,将视图控制器初始化为局部变量,不要访问其视图或将其添加到视图层次结构并保留当前范围。视图控制器将会退出,viewDidLoad()将永远不会被调用。

请注意,viewDidLoad()仅在第一次显式访问视图控制器的view属性时调用,或者在调用loadView()loadViewIfNeeded()时调用在视图控制器上。

答案 1 :(得分:0)

经历了类似的经历,发现我错误地两次叫了同一个segue。构造的第一个视图控制器立即被取消初始化(pre viewDidLoad)。