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