每个人都告诉我“使用super.viewDidLoad()因为它就是这样”或“我一直那样做,所以要保留它”,“如果不叫super就是错误的”等。
override func viewDidLoad() { super.viewDidLoad() // other stuff goes here }
我只发现了一些有关Objective-C用例的主题,这些主题并没有那么启发性,但是我正在Swift 3中进行开发,所以有什么专家可以给我一个很好的详细解释吗?
这是一种良好实践的案例还是有任何隐藏的影响?
通常,最好为您覆盖的所有没有返回值的函数调用super。
您不知道的实现viewDidLoad。UIViewController可能在那里做了一些重要的设置工作,不调用它就不会给它运行自己的viewDidLoad代码的机会。
viewDidLoad
从UIViewController子类继承时,也会发生同样的事情。
即使打电话super.viewDidLoad没有做任何事情,也要经常打电话来养成良好的习惯。如果您习惯于不调用它,则可能会在需要时忘记调用它。例如,当从第3方框架或您自己的代码库继承依赖于它的ViewController的子类时。
super.viewDidLoad
举这个人为的例子:
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代码的机会
PrintingViewController
如果您不想做任何事情,viewDidLoad那就不要实施它。无论如何都将调用super方法。