是否有可能确保某个特定的超类'方法在重写的子类方法的末尾被调用?
请考虑这一点(并忍受我和我的愚蠢问题):
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()
}
}
在我看来,简单的继承是不可能的,但也许有一些技巧可以实现它。
答案 0 :(得分:0)
您唯一的选择是:
class SubView2 : SubView1 {
override func layoutSubviews() {
// layout my own(SubView2) subviews
super.layoutSubviews() // Layout parent(SubView1) subviews
}
}
由于您在结束时调用了super.layoutSubviews()
,因此对notify
的调用将在结束时发生,而不是在布置SubView2之前。