为什么/何时必须调用super.ViewDidLoad?

每个人都告诉我“使用super.viewDidLoad()因为它就是这样”或“我一直那样做,所以要保留它”,“如果不叫super就是错误的”等。

override func viewDidLoad() {

super.viewDidLoad()

// other stuff goes here

}

我只发现了一些有关Objective-C用例的主题,这些主题并没有那么启发性,但是我正在Swift

3中进行开发,所以有什么专家可以给我一个很好的详细解释吗?

这是一种良好实践的案例还是有任何隐藏的影响?

回答:

通常,最好为您覆盖的所有没有返回值的函数调用super。

您不知道的实现viewDidLoad。UIViewController可能在那里做了一些重要的设置工作,不调用它就不会给它运行自己的viewDidLoad代码的机会。

从UIViewController子类继承时,也会发生同样的事情。

即使打电话super.viewDidLoad没有做任何事情,也要经常打电话来养成良好的习惯。如果您习惯于不调用它,则可能会在需要时忘记调用它。例如,当从第3方框架或您自己的代码库继承依赖于它的ViewController的子类时。

举这个人为的例子:

class PrintingViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

print("view has loaded")

}

}

class UserViewController: PrintingViewController {

override func viewDidLoad() {

super.viewDidLoad()

// do view setup here

}

}

在这里不调用viewDidLoad永远不会给PrintingViewController它运行自己的viewDidLoad代码的机会

如果您不想做任何事情,viewDidLoad那就不要实施它。无论如何都将调用super方法。

以上是 为什么/何时必须调用super.ViewDidLoad? 的全部内容, 来源链接: utcz.com/qa/405671.html

回到顶部