gpt4 book ai didi

ios - 从 Swift 初始化 obj viewcontroller 时未调用 viewDidLoad

转载 作者:可可西里 更新时间:2023-11-01 02:19:24 26 4
gpt4 key购买 nike

在我的 Swift 代码中,我尝试像下面这样实例化一个 Objective-C View Controller ,但是 viewDidLoad 方法没有被调用。

let detailMessageVC = DetailMessageViewController(nibName:nil, bundle:nil)

如果我像这样从 Objective-C 代码实例化相同的 View Controller 它确实被调用了。 View Controller 没有 xib。

self.detailMVC = [[DetailMessageViewController alloc] init];

有人知道为什么会这样吗?我希望在从 Swift 调用时具有相同的行为,因为我依赖 viewDidLoad 来执行各种初始化。这是 Xcode 6.3.2

最佳答案

如评论所述, View Controller 的初始化与其 viewDidLoad 回调之间没有联系。

您甚至可以在初始化之前调用 viewDidLoad。因为如果 ViewController 有效地加载了一个 View ,就会调用 viewDidLoad

在那里检查:https://stackoverflow.com/a/4862772/1486230

尽管如此,我不会依赖 viewDidLoad 除非您知道您将有效地显示您的 ViewController;主要是通过使用 myVC.view

就像初始化一个 ViewController(它只是一个逻辑对象)与创建它的 View 不同一样。出于性能原因,如果不需要,iOS 不会创建图形对象。如果你发现 Swift 和 Objective-C 之间存在差异,那更多是因为 Swift 在优化方面可能更好。但行为是正常的。

关于ios - 从 Swift 初始化 obj viewcontroller 时未调用 viewDidLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038117/

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