我经常在 UIViewController
中使用方便的 init 来制作自定义初始化程序。
但我不知道在 self.init()
时调用了 UIViewController
的现有初始化程序。
是public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
吗?
在 UIViewController
的便捷初始化中 self.init()
时会调用什么?
final class SampleViewController: UIViewController {
private var component: Component?
convenience init(component: Component) { // Custom initializer
self.init() // What is this initializer?
self.component = component
}
override func viewDidLoad() {
...
}
...
}
最佳答案
UIViewController.init
调用 UIViewController.init(nibName: nil, bundle: nil)
。这意味着 nibName
将等于类的名称,并且 bundle 将是主 bundle 。
UIViewController.init
只是一个方便的初始化程序。在 swift 中,这可以使用默认参数 UIViewController.init(nibName: String? = nil, bundle: NSBundle? = nil)
来实现,但这是一个旧的 Objective-C API,Objective-C 没有默认参数,这就是为什么有一个单独的方便 init()
。
关于swift - UIViewController 的便利 init 中调用了什么初始化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54309882/