iOS/Swift

[Swift] designated init 과 convenience init

최지철 2024. 5. 30. 09:12
728x90
반응형

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의 매개변수 하위 집합으로 초기화를 허용하여 초기화 프로세스를 단순화하는 것입니다. 인스턴스 생성을 위한 보다 편리한 구문을 제공하는 데 사용할 수 있다.
728x90
반응형