iOS/Swift
[Swift] designated init 과 convenience init
최지철
2024. 5. 30. 09:12
반응형
Designated init (지정 초기화)
- 해당 클래스에 의해 선언된 모든 property를 모두 초기화하고 적절한 super class의 init을 호출하여 super class까지 init 프로세스를 진행
- init
class Person {
let name: String
let age: Int
let birthDay: String
init(name: String, age: Int, birthDay: String) {
self.name = name
self.age = age
self.birthDay = birthDay
}
}
Convenience init (편의 초기화)
- Designated init의 parameter중 일부를 기본값으로 설정하여 동일한 클래스에서 지정된 initializer를 호출하도록 정의
class Person {
let name: String
let age: Int
let birthDay: String
init(name: String, age: Int, birthDay: String) {
self.name = name
self.age = age
self.birthDay = birthDay
}
convenience init(age: Int, birthDay: String) {
self.init(name: "홍길동", age: age, birthDay: birthDay)
}
}
// convenience init 사용
let person = Person(age: 12, birthDay: "121212")
정리
- convenience init은 보조 이니셜라이저다.
- convenience init을 사용할려면 Designated init을 먼저 호출하여야 한다.
- convenience init은 기본값을 제공하거나 Designated init의 매개변수 하위 집합으로 초기화를 허용하여 초기화 프로세스를 단순화하는 것입니다. 인스턴스 생성을 위한 보다 편리한 구문을 제공하는 데 사용할 수 있다.
반응형