例如:
// 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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)