Прежде всего, документы не говорят, что вам нужно позвонить super
. Сравните это, например, с viewWillAppear(_:)
, чье состояние docs :
Если вы переопределите этот метод, вы должны вызвать super
в какой-то момент вашей реализации.
Таким образом, вызов super
необходим, только если у вас есть пользовательский подкласс UIViewController
, давайте назовем его BaseViewController
, что делает что-то в viewDidLoad()
.
Когда вы потом наследуетес BaseViewController
вам, вероятно, нужно позвонить super
, чтобы выполнить работу BaseViewController
. В зависимости от характера, вам нужно будет сделать это в начале, где-то посередине или в конце ваших подклассов viewDidLoad()
. Это до BaseViewController
для правильного документирования.
Вот надуманный пример:
class ColorfulViewController: UIViewController {
/// Defines background color of view. Override in subclass.
var shinyColor: UIColor = .red
/// Sets the background color. Make sure to call `super` in subclass.
func viewDidLoad() {
backgroundColor = shinyColor
}
}
class PinkViewController: ColorfulViewController {
override var shinyColor: UIColor = .systemPink
func viewDidLoad() {
super.viewDidLoad() // This one doesn't matter where it goes.
// Additional work.
}
}
Еще один надуманный пример, где вы хотите вызвать super
в конце:
class CountingViewController: UIViewController {
var count: Int = 0
/// Counts the subviews. When subclassing, make sure to call `super` *after*
/// view is fully configured.
func viewDidLoad() {
count = view.subviews.count
}
}
class FooViewController: CountingViewController {
override var shinyColor: UIColor = .systemPink
func viewDidLoad() {
// Additional work.
super.viewDidLoad()
}
}