電気ひつじ牧場

技術メモ

【Swift3】コンビニエンスイニシャライザとは

お久しぶりです。そろそろ新しい記事を書いたらどうだとはてなさんから怒られたので書きます。
swiftの勉強をしていて目新しいなと思ったconvenience initializerについてです。

コンビニエンスイニシャライザ

あるイニシャライザから同一クラスの別のイニシャライザをself.init()で呼び出すことができます。複数コンビニエンスイニシャライザを定義できますが、最低一つはconvenienceがつかない指定イニシャライザを定義する必要があります。

class CommentBox{
    let name:String
    let comment:String
    //指定イニシャライザ
    init (name:String, comment:String){
        self.name = name
        self.comment = comment
    }
    //コンビニエンスイニシャライザ
    convenience init(name:String="unknown"){
        self.init(name:name, comment:"No Message")
    }
}

コンビニエンスイニシャライザのconvenience修飾は別のイニシャライザを呼び出す側のイニシャライザにつけます。
これによってイニシャライザのオーバライドみたいなことができます。引数によって実装がわずかに変化するときに利用しましょう。