Initializer Delegation이란, 생성자에서 또 다른 생성자를 호출하여 초기화 코드의 중복을 최대한 제거하고, 모든 프로퍼티를 효율적으로 초기화 하기위해 사용하는 것.
값(구조체) 형식와 참조(클래스) 형식이 다르다.(상속의 여부가 갈리기 때문)
struct Position {
var x: Int
var y: Int
init(xPos: Int, yPos: Int) {
x = xPos
y = yPos
}
/// 옳바르지 않은 예(중복된 코드)////
init(pos: Int) {
x = pos
y = pos
}
//////옳바른 예//////
init(pos: Int) {
self.init(xPos: pos, yPos: pos)
}
}
class People: Human {
var nickNameL: String
init(nickName: String){
self.nickName = nickName
super.init(name: "unknown") // Delegate Up
}
convenience init(){
self.init(nickName: "unknown") // Delegate Across
}
}
참조
개발자 소들이