何时在覆盖ios方法时使用super

何时在覆盖ios方法时使用super,第1张

概述我的同事有时会在覆盖ios方法时调用super,有时候不会.这似乎主要基于他们的经验.在决定是否打电话给超级时,是否有经验法则? 例如: // Has superoverride func awakeFromNib() { super.awakeFromNib()}// No superoverride func drawRect(rect: CGRect) {} 对于是否应该 我的同事有时会在覆盖ios方法时调用super,有时候不会.这似乎主要基于他们的经验.在决定是否打电话给超级时,是否有经验法则?

例如:

// Has superoverrIDe func awakeFromNib() {    super.awakeFromNib()}// No superoverrIDe func drawRect(rect: CGRect) {}
解决方法 对于是否应该调用给定方法的超级实现,实际上没有经验法则.这应该根据具体情况确定,具体取决于超类的实施方法文档中的建议以及您的要求.

只是为了解释为什么你所包含的两个例子可能是它们的方式,我们可以查看-[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.

大多数情况下,你可以安全地打电话给方法的超级实现(见下面的评论).但是,请注意,某些方法要求您调用其超级实现,有些则不需要,有些方法甚至要求您在覆盖中的特定点调用超级实现.所以请记住,如有疑问,请务必查阅文档.

总结

以上是内存溢出为你收集整理的何时在覆盖ios方法时使用super全部内容,希望文章能够帮你解决何时在覆盖ios方法时使用super所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1103185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存