override func viewDidLoad() {
super.viewDidLoad()
print(" viewDidLoad")
// Do any additional setup after loading the view, typically from a nib.
}如果来自上述函数的super.viewDidLoad()有任何问题
发布于 2018-08-13 15:18:52
是的,它夺走了super在viewDidLoad()中做任何事情的机会。
如果super不做任何事情(如果您直接对UIViewController进行子类化,则可能是这种情况),那么您可能看不到任何直接的区别。但是,例如,如果您对刚编写的类进行子类化,而不调用super,那么您的print就不会被调用。
更多信息请访问:Do I always have to call [super viewDidLoad] in the -viewDidLoad method?
发布于 2018-08-13 15:19:47
对于从UIViewController继承的VC,不调用super.viewDidLoad没有区别。
然而,当你有一个VC继承了一个类,而这个类在它的viewDidLoad中实际做了一些事情,这将会有所不同。
示例1
我曾经做过一个棋盘游戏,我有一个GameViewController,它可以显示一个双人游戏的游戏屏幕。GameViewController.viewDidLoad对游戏棋盘视图和游戏模型等进行了一些设置。然后有一天,我决定为这款游戏编写一个AI,这样人们即使在独自一人的时候也可以玩。使用AI的游戏与双人游戏略有不同,所以我做了一个继承了GameViewController的AIGameViewController。
在AIGameViewController中,我必须调用super.viewDidLoad,否则我必须在GameViewController.viewDidLoad中复制并粘贴代码。
示例2
有一个名为"Eureka“的库,允许您创建表单供用户填写。要使用它,您需要创建一个继承自FormViewController的新VC,然后您可以开始在viewDidLoad中向表单添加行。这里需要调用super.viewDidLoad,因为FormViewController将设置一个表视图来显示表单。如果没有表视图,将不会显示您的窗体。
https://stackoverflow.com/questions/51816848
复制相似问题