gpt4 book ai didi

swift - Deinit 调用了两次

转载 作者:行者123 更新时间:2023-11-28 10:58:02 26 4
gpt4 key购买 nike

这似乎出现在我们项目中的两个 Controller 上。我检查了代码和 Storyboard, Storyboard中的 segue 没有在 Controller 中调用,没有与将触发 segue 的按钮相关的 IBAction 或 IBOutlet。虽然当我离开我的 Controller 时,我可以从打印中看到 deinit 方法被调用了两次。

这很奇怪,因为 viewDidLoad 和 viewWillDisappear 只调用了一次,以前有人遇到过这种行为吗?与 SO 上的双重 deinit 无关,我非常想了解发生了什么。

编辑:所以,很少有更新。我添加了这段代码,我在上面设置了一个断点以检查 Controller 何时初始化:

        override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

}

required init(coder aDecoder: NSCoder) {
print("init coder style")
super.init(coder: aDecoder)!
}

所以当我触发 segue 到达我的 Controller 时,init coder 被调用一次,当我点击插入 popSegue 的所述 Controller 的 ok 按钮时,我的 Controller 然后第二次初始化(也使用 init编码器)然后双重 deinit 发生。

所以当我用 popSegue 关闭它时,我的 Controller 创建了一个空实例。我不明白为什么。

最佳答案

我的第一个想法是,也许您实际上有两个对象。尝试在 deinit 上设置断点,并查看两次对象的指针值是否相同。

关于swift - Deinit 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com