我应该在我自己的代码之后还是之前调用 [super superMethod]?

Posted

技术标签:

【中文标题】我应该在我自己的代码之后还是之前调用 [super superMethod]?【英文标题】:should I call the [super superMethod] after my own code or before it? 【发布时间】:2011-09-16 07:35:16 【问题描述】:

[对不起我的英语不好]

问题很简单(但我在表达和在谷歌中找到它时遇到了麻烦)......

我应该(在所有类似的情况下,当我覆盖超级方法时,不仅仅是这个)使用:

- (void)viewDidLoad

    /*
       my code
     */

    [super viewDidLoad];

- (void)viewDidLoad

    [super viewDidLoad];

    /*
       my code
     */

还是取决于?

【问题讨论】:

一般来说,super 调用应该在“建立”时在例程的开始,在“拆除”时在结束。 【参考方案1】:

在某些情况下,顺序无关紧要。在其他情况下,秩序至关重要。

一些有帮助的概括:

在构造对象状态的一部分(viewDidLoadinit...)时,首先调用super。 当您要破坏对象状态的一部分(viewDidUnloaddealloc)时,最后调用 super。 如果我确定订单无关紧要,那么我只需先致电super 以方便组织。

【讨论】:

【参考方案2】:

这取决于方法;例如-[super init](之前)与-[super dealloc](之后)。

【讨论】:

好吧 TNX,但也许有人应该在这里多谈谈这个话题:)

以上是关于我应该在我自己的代码之后还是之前调用 [super superMethod]?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在子类中使用super()调用父类方法

l1n在initState之前调用

在从初始化程序返回之前,不会在所有路径上调用 super init

在 openGL 中,模型坐标应该在我的 CPU 上还是通过 OpenGL 调用在 GPU 上计算?

在java中的super调用之前创建一个对象

Swift:在从初始化程序返回之前,不会在所有路径上调用“super.init”?