【问题标题】:Obj-C: call super classObj-C:调用超类
【发布时间】:2011-01-20 17:33:26
【问题描述】:
- (void)viewDidAppear:(BOOL)animated {
    <CODE BEFORE>
    [super viewDidAppear:animated];
    <CODE AFTER>
}

什么是正确的,将所有代码放在 super 调用之前或之后? 它的工作方式是双向的,但我不知道是等到电话结束还是在开始时提交更好?

干杯

【问题讨论】:

    标签: iphone objective-c oop super


    【解决方案1】:

    一般的经验法则是在设置时首先调用它(如这里)并在拆除时最后调用它。

    【讨论】:

      【解决方案2】:

      一般来说,您的代码应该在调用 super.一个明显的例外是 dealloc,在这种情况下,您想在自己清理完之后调用 [super dealloc]。

      【讨论】:

        【解决方案3】:

        这要看具体情况,真的:

        • 对于初始化/清理,显然,由于子类依赖于它的超类状态,它应该在初始化之后和之前清理。

        • 一般来说,您很可能需要在超级调用之前和之后添加行为,甚至完全忽略超级调用(毕竟,这就是方法覆盖的用途)。

        在这种情况下,请参阅其他答案;但由于viewDidAppear: 是一种类似通知的方法,它实际上取决于您的代码是否需要完全初始化的对象,或者参与初始化本身,因此必须在完成后才继续进行超级调用。

        【讨论】:

          【解决方案4】:

          这取决于你在做什么。你能提供一些关于你正在使用的对象的上下文吗?

          例如,在对象销毁的上下文中,你最后调用super。

          - (void)dealloc {
          [someObj release];
          
          [super dealloc];
          

          }

          【讨论】:

            猜你喜欢
            • 2018-02-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-03-16
            • 1970-01-01
            • 1970-01-01
            • 2011-09-09
            相关资源
            最近更新 更多