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

时间:2018-08-13 07:07:25

标签: ios swift

override func viewDidLoad() {
    super.viewDidLoad()
    print(" viewDidLoad")
    // Do any additional setup after loading the view, typically from a nib.
}

如果上面的函数中的super.viewDidLoad()有任何问题

2 个答案:

答案 0 :(得分:0)

是的,它剥夺了superviewDidLoad()中做任何事情的机会。

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

查看更多:Do I always have to call [super viewDidLoad] in the -viewDidLoad method?

答案 1 :(得分:0)

对于从UIViewController继承的VC,不调用super.viewDidLoad没什么区别。

但是,如果您有一个继承自某个类的VC,而该类实际上在其viewDidLoad中执行了某些操作,则 会有所不同。


示例1

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

AIGameViewController中,我必须呼叫super.viewDidLoad,否则我必须将代码复制并粘贴到GameViewController.viewDidLoad中。


示例2

有一个名为“ Eureka”的库,可让您创建供用户填写的表单。要使用该库,请创建一个继承自FormViewController的新VC,然后可以开始向其中添加行viewDidLoad中的表格。必须在这里调用super.viewDidLoad,因为FormViewController将建立一个表格视图来显示该表单。没有表格视图,您的表单将不会显示。