gpt4 book ai didi

ios - 重写 ios 方法时何时使用 super

转载 作者:IT王子 更新时间:2023-10-29 05:36:51 25 4
gpt4 key购买 nike

我的同事有时会在覆盖 ios 方法时调用 super,有时则不会。这似乎主要是基于他们的经验。在决定是否调用 super 时是否有经验法则可供使用?

例如:

// Has super
override func awakeFromNib() {
super.awakeFromNib()
}

// No super
override func drawRect(rect: CGRect) {
}

最佳答案

对于是否应该调用给定方法的 super 实现并没有真正的经验法则。这应该根据具体情况来确定,具体取决于父类(super class)实现该方法的文档中的建议以及您的要求。

为了解释为什么您提供的两个示例可能是这样,我们可以查看 -[UIView drawRect:] 的文档,其中指出:

If you subclass UIView directly, your implementation of this method does not need to call super. However, if you are subclassing a different view class, you should call super at some point in your implementation.

-[NSObject awakeFromNib] 的文档,其中指出:

You must call the super implementation of awakeFromNib to give parent classes the opportunity to perform any additional initialization they require. Although the default implementation of this method does nothing, many UIKit classes provide non-empty implementations.

大多数时候,您应该调用方法的 super 实现可能是一个安全的赌注(请参阅下面的评论)。但是,请注意,有些方法需要您调用它们的 super 实现,有些则不需要,有些甚至需要您在覆盖中的特定点调用 super 实现。因此请记住,如有疑问,请务必查阅文档。

关于ios - 重写 ios 方法时何时使用 super,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com