首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从viewDidLoad()函数中删除super.viewDidLoad()

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

Stack Overflow用户
提问于 2018-08-13 15:07:25
回答 2查看 455关注 0票数 0
代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
    print(" viewDidLoad")
    // Do any additional setup after loading the view, typically from a nib.
}

如果来自上述函数的super.viewDidLoad()有任何问题

EN

回答 2

Stack Overflow用户

发布于 2018-08-13 15:18:52

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

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

更多信息请访问:Do I always have to call [super viewDidLoad] in the -viewDidLoad method?

票数 0
EN

Stack Overflow用户

发布于 2018-08-13 15:19:47

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

然而,当你有一个VC继承了一个类,而这个类在它的viewDidLoad中实际做了一些事情,这将会有所不同。

示例1

我曾经做过一个棋盘游戏,我有一个GameViewController,它可以显示一个双人游戏的游戏屏幕。GameViewController.viewDidLoad对游戏棋盘视图和游戏模型等进行了一些设置。然后有一天,我决定为这款游戏编写一个AI,这样人们即使在独自一人的时候也可以玩。使用AI的游戏与双人游戏略有不同,所以我做了一个继承了GameViewControllerAIGameViewController

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

示例2

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51816848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档