Ios 从viewDidLoad()函数中删除super.viewDidLoad()

Ios 从viewDidLoad()函数中删除super.viewDidLoad(),ios,swift,Ios,Swift,如果上面函数中的super.viewDidLoad()是,则会出现任何问题,它会剥夺super在viewDidLoad()中执行任何操作的机会 如果super没有做任何事情(如果您直接子类化UIViewController,可能就是这种情况),那么您可能看不到任何直接的区别。但是,如果您要对刚刚编写的类进行子类化,而不调用super,则不会调用打印 请参阅更多信息:有关继承自UIViewController的VC,不调用super。viewDidLoad没有任何区别 然而,如果你有一个VC继承了

如果上面函数中的super.viewDidLoad()是,则会出现任何问题,它会剥夺super在
viewDidLoad()中执行任何操作的机会

如果
super
没有做任何事情(如果您直接子类化
UIViewController
,可能就是这种情况),那么您可能看不到任何直接的区别。但是,如果您要对刚刚编写的类进行子类化,而不调用
super
,则不会调用打印


请参阅更多信息:

有关继承自
UIViewController
的VC,不调用
super。viewDidLoad
没有任何区别

然而,如果你有一个VC继承了一个类,而这个类实际上在它的
viewDidLoad
中做了一些事情,那么这个VC就会起作用


例1 我曾经做过一个棋盘游戏,我有一个
GameViewController
,显示两人游戏的游戏屏幕
GameViewController.viewDidLoad
对游戏板视图和游戏模型等进行一些设置。后来有一天,我决定为这个游戏写一个AI,这样人们即使独自一人也可以玩。使用AI的游戏与两人游戏略有不同,因此我制作了一个
AIGameViewController
,它继承了
GameViewController

AIGameViewController
中,我必须调用
super.viewDidLoad
,否则我必须在
GameViewController.viewDidLoad
中复制并粘贴代码


例2
有一个名为“Eureka”的库,允许您创建表单供用户填写。要使用它,您可以创建一个从
FormViewController
继承的新VC,然后开始在
viewDidLoad
中向表单添加行。这里需要调用
super.viewDidLoad
,因为
FormViewController
将设置一个表视图来显示表单。如果没有表格视图,您的表单将不会显示。

同样相关:请参见apple文档。您应该调用super.viewDidLoad方法,因为它可能会对父类/超类进行一些初始设置,因为您的customVC类是从VC类继承的。如果你不这样做,它也可以正常工作,但在某些情况下,它可能会表现出不可预测的行为。
override func viewDidLoad() {
    super.viewDidLoad()
    print(" viewDidLoad")
    // Do any additional setup after loading the view, typically from a nib.
}