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