是否可以确保在重写的子类方法的末尾调用某个特定的超类的方法?
请考虑一下(并接受我和我的愚蠢问题):
class SubView1 : UIView {
override func layoutSubviews() {
super.layoutSubviews() // Layout parent(UIView) subviews
// layout my own(SubView1) subviews
self.notify()
}
func notify() {
// post notification that view finished layout of subviews
}
}
class SubView2 : SubView1 {
override func layoutSubviews() {
super.layoutSubviews() // Layout parent(SubView1) subviews
// layout my own(SubView2) subviews
// I want that `notify()` is called at this point
// and not in the end of super.layoutSubviews()
}
}
在我看来,简单继承是不可能的,但是也许有一些技巧可以实现它。
最佳答案
您唯一的选择是执行以下操作:
class SubView2 : SubView1 {
override func layoutSubviews() {
// layout my own(SubView2) subviews
super.layoutSubviews() // Layout parent(SubView1) subviews
}
}
由于您在末尾调用
super.layoutSubviews()
,因此对notify
的调用将在末尾而不是在布局SubView2之前发生。关于swift - swift 。确保在子类方法的末尾调用父类(super class)方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48213804/