convenienceイニシャライザは簡単にいうと、イニシャライザの中でinitができるようになるもの!
簡単な例:
class Caffe {
let place: String
let name: String
// 指定イニシャライザ(A)
init(place:String, name:String) {
self.place = place
self.name = name
}
// コンビニエンスイニシャライザ(B)
convenience init(place:String = "目白") {
self.init(msg:msg, name:"スターバックス")
}
func where() {
print("\(name)は\(place)にあります")
}
}
// イニシャライザBが実行される
let Caffe = Caffe()
let CaffePlace = Caffe(place: "渋谷")
Caffe.where() // スターバックスは目白にあります。
CaffePlace.where() // スターバックスは渋谷にあります。
// イニシャライザAが実行される
let CaffeNameAndPlace = Caffe(place: "沖縄", name: "タリーズ")
CaffeNameAndPlace.where() // タリーズは沖縄にあります。