斯威夫特
class A: UIView {
override init() {
super.init()
println("init A")
}
override init(frame: CGRect) {
super.init(frame: frame)
println("initFrame A")
}
}
B.斯威夫特
class B: A {
override init() {
super.init()
//P1
println("init B")
}
override init(frame: CGRect) {
super.init(frame: frame)
println("initFrame B")
}
}
然后我称之为B():
我有一个输出:
initFrame A
initFrame B
init A
init B
我试图确定什么?叫什么时候?……之后B()。我希望完全理解它。
init()在Asuper.init()在init()里面Ainit()在Bsuper.init()在init()里面Binit()在UIViewsuper.init()在init()里面UIView
现在我们说对了P1,对吧?
init()打电话给init(frame:)_BCGRectZerosuper.init(frame:)在init(frame:)里面Binit(frame:)在Asuper.init(frame:)在init(frame:)里面Ainit(frame:)在UIViewsuper.init(frame:)在init(frame:)里面UIView
现在我们要回来了
- 叫剩下
init(frame:)的UIView init(frame:)在A--> initFrame A中调用其余部分init(frame:)在B--> initFrame B中调用其余部分
问题是现在发生了什么?我们现在在哪里?(在里面init()? )和UIView的行在哪里打印?init Ainit B
感谢帮助。