init 알아보기

Tabber·2022년 1월 13일
0

iOS Review

목록 보기
12/15

공부하며 적는 글입니다. 정확하지 않을 수 있습니다.

init의 종류는 다양하지만 Designated init과 convenience init 에 대해 알아보겠다.

Designated init (지정 이니셜라이저)

일단 우리가 가장 잘 아는 지정 이니셜라이저는 Swift의 초기화 이니셜라이저이다.

이 init은 클래스의 모든 프로퍼티가 초기화 될 수 있도록 해줘야 한다.

class Person {
    let name: String
    let age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

이렇게 말이다.

근데 여기서 프로퍼티가 하나라도 빠지게 되면,

이렇게 오류를 뿜는다.

자, 이쯤에서 convenience init 를 알아보면 될 듯하다.

convenience init (편의 이니셜라이저)

convenience init은 "보조 이니셜라이저" 이다.
클래스의 원래 이니셜라이저인 init을 도와주는 역할을 하게 된다.

지정 이니셜라이저의 파라미터 중 일부를 기본값으로 설정해서, 이 편의 이니셜라이저 안에서 지정 이니셜라이저를 호출 하여 초기화를 진행할 수 있다.

따라서 편의 이니셜라이저를 사용하려면 지정 이니셜라이저가 무조건 선언되어 있어야 한다.

또한 Swift의 이니셜라이저의 규칙이 몇 가지 존재하는데,
"convenience init(편의 이니셜라이저)는 같은 클래스에서 다른 이니셜라이저를 호출해야한다." 라는 규칙이 존재한다.

class Person {
    let name: String
    let age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    convenience init(age: Int) {
        self.init(name: "Kirri", age: age)
    }
}

이렇게 바로 사용할 수가 있다.
파라미터로 지정하지 않은 값은 개발자가 임의로 지정하게 되고, 파라미터로 넘어간 것만 넣어주면 된다.

정리

Designated init과 convenience init 에 대해 알아보았다.

Designated init은 클래스의 모든 프로퍼티를 초기화 될 수 있도록 선언해주어야 하고,convenience init은 Designated init을 도와주는 역할로 다른 파라미터를 설정하여 확장할 수 있는 기능이다.

profile
iOS 정복중인 Tabber 입니다.

0개의 댓글