失敗可能イニシャライザとその継承
今回は、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