swift 5 문법
[iOS - swift] (초기화) designated init vs convenience init
jake-kim
2021. 6. 16. 00:40
Designated init (지정 초기화)
- 역할: 해당 클래스에 의해 선언된 모든 property를 모두 초기화하고 적절한 super class의 init을 호출하여 super class까지 init 프로세스를 진행
- Designated init은 그냥 "Designated"를 생략하여 그냥 init으로 사용
Convenience init (편의 초기화)
- Designated init의 parameter중 일부를 기본값으로 설정하여 동일한 클래스에서 지정된 initializer를 호출하도록 정의
예시
- designated 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에 default를 주고 싶은 경우 사용
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")
* 참고
https://docs.swift.org/swift-book/LanguageGuide/Initialization.html