斯威夫特
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()
在A
super.init()
在init()
里面A
init()
在B
super.init()
在init()
里面B
init()
在UIView
super.init()
在init()
里面UIView
现在我们说对了P1
,对吧?
init()
打电话给init(frame:)
_B
CGRectZero
super.init(frame:)
在init(frame:)
里面B
init(frame:)
在A
super.init(frame:)
在init(frame:)
里面A
init(frame:)
在UIView
super.init(frame:)
在init(frame:)
里面UIView
现在我们要回来了
- 叫剩下
init(frame:)
的UIView
init(frame:)
在A
--> initFrame A中调用其余部分init(frame:)
在B
--> initFrame B中调用其余部分
问题是现在发生了什么?我们现在在哪里?(在里面init()
? )和UIView
的行在哪里打印?init A
init B
感谢帮助。