Avatar
omochimetaru 6/19/2020 9:01 AM
サブクラスにinitが1つも無いとき、自動でやる。
9:03 AM
class C1 { init() {} } class C2 { private init(_ a: Int) {} } C2() // error
9:03 AM
class C1 { init() {} } class C2 { } C2() // ok これはC1.initが見えてるんじゃなくて、C2.initが自動定義されてるんじゃないだろうか。 C++の自動コンストラクタ定義みたいなノリで。
9:04 AM
class C1 { required init(a: Int) {} init(b: Int) {} } class C2 { } C2() ↑よくViewController書いてるとなるやつ
9:06 AM
class C1 { required init(a: Int) {} init(b: Int) {} } class C2: C1 { override init(b: Int) { super.init(b: b) } // 'required' initializer 'init(a:)' must be provided by subclass of 'C1' }
9:06 AM
サブクラス側にひとつでも何かしらのinitがあると、自動実装がなくなるから、required initのoverrideしてないよって言われる。