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를 호출해야 한다.
# 참고한 사이트
'iOS > Swift 상식' 카테고리의 다른 글
Swift - Optional (0) | 2023.01.23 |
---|---|
Swift - Any vs AnyObject (0) | 2023.01.23 |
Swift - Copy On Write(COW) 동작 방식 (0) | 2023.01.23 |
Swift - Class 성능 향상 시키는 방법 (0) | 2023.01.07 |
iOS - Storyboard vs Code (0) | 2023.01.07 |