A.スイフト
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
- --> initFrame Aの残りの部分を
init(frame:)
呼び出しますA
- --> initFrame Bの残りの部分を
init(frame:)
呼び出しますB
問題は、今何が起こっているかです。私たちは今どこにいますか?(? の内部)init()
と?UIView
の行はどこに出力されinit A
ますinit B
か?
手伝ってくれてありがとう。