失敗可能イニシャライザとその継承
今回は、Swift4で失敗可能イニシャライザを継承した時のメモ。
Playgroundsで、以下のコードを貼り付けて、
//: Playground - noun: a place where people can play import UIKit class Foo { var foo: Int = 0 init?(foo: Int) { if foo == 0 { return nil } self.foo = foo } } class Bar: Foo { var bar: Int = 0 override init?(foo: Int) { print("aaa") super.init( foo: foo ) print("bbb") self.bar = foo * 2 } } let hoge = Foo( foo: 100 ) hoge?.foo let fuga = Bar( foo: 200 ) fuga?.bar print("=-=-=-=-=-=-=-=-=-=") let hoge2 = Foo( foo: 0 ) let fuga2 = Bar( foo: 0 )
すると、こんな感じの結果が得られる。
まとめ
継承した先で、失敗チェックを行う必要はなさそう。
継承した先のイニシャライザでsuper.init()
が失敗すると、
それ以降は実行されない。
そういえば、Swiftだとか、Objective-Cなのか、
Swiftって言ってもどのバージョンなのか分けてなかったので、
今後は、タグ付けくらいはしようと思う。
おしまい。
Leave a Comment