gpt4 book ai didi

ios - 如何以编程方式正确初始化 ViewController? loadView() vs init(nibName : nil, bundle: nil)

转载 作者:可可西里 更新时间:2023-11-01 02:17:23 28 4
gpt4 key购买 nike

我想知道从代码初始化 ViewController 的正确方法是什么。没有 xib 或 Storyboard。

我知道两种方法。覆盖 loadView()

override func loadView() {
view = UIView()
commonInit() // some init
}

或提供init()

init() {
super.init(nibName: nil, bundle: nil)
commonInit() // some init
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

如果我们提供 init 并且 nib 为 nil 我知道我们调用 loadView() 的默认实现来设置我们的 View 属性。

哪种方法更正确,为什么?

最佳答案

关注点分离建议同时使用这两种方法。覆盖 loadView() 以初始化和设置 View ,覆盖 init() 以初始化其他属性。

loadView() 延迟运行,这意味着它不会被调用,直到某些东西试图访问 View Controller 的 .view 属性。

为了扩展 init 应该包含的内容,如果你的 View Controller 需要网络访问,那么它就是你应该获取(或注入(inject))你的 HTTP 管理器的地方。

关于ios - 如何以编程方式正确初始化 ViewController? loadView() vs init(nibName : nil, bundle: nil),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887100/

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