iOS/Swift 상식
Swift - Convenience init
HJ39
2023. 1. 23. 20:16
Init의 종류에는 2가지가 존재한다.
- Designated init
- convenience init
Init은 멤버들을 초기화하고 상속받은 멤버들을 커스텀하기 위해 사용한다.
(Designated) Init
(Designated) Init은 우리가 클래스를 생성할 때 자주 사용했던 Init이다.
해당 Init은 클래스의 프로퍼티가 모두 초기화되게 만들어준다.
class Pet{
var dog: String
var cat: String
init(dog: String, cat: String){
self.dog = dog
self.cat = cat
}
}
Convenience init
Convenience init은 Designated init을 보조하여 도와주는 역할이다.
말 그대로 보조이므로 Designated Init이 먼저 생성되어 있어야 사용할 수 있다.
class Pet{
var dog: String
var cat: String
init(dog: String, cat: String){ // → 1번
self.dog = dog
self.cat = cat
}
convenience init(cat: String){ // → 2번
self.init(dog: "Pomi", cat: cat)
}
}
convenience 내부에서는 같은 클래스의 자신을 제외한 다른 Initializer를 호출해야 한다.
위 예제에서는 2번 convenience Init을 제외한 Initializer는 1번이므로 1번 Initializer를 호출해야 한다.
# 참고한 사이트