convenience init

이창형·2023년 4월 14일
0

iOS 박살내기

목록 보기
6/10
post-thumbnail

다들 class 생성시 init을 통해 모든 프로퍼티들을 초기화 해줘야 하는 것 아시죠?!

이렇게요

하지만 하나라도 초기화를 시키지 않는다면..

이렇게 오류가 나요🧐

오늘은 init과 비슷하지만, 보조 역할을 하는 convenience init에 대해서 알아보겠습니다!

init과 비교하여 이해하기 쉽게 상황 예시를 들어볼게요.

-------상황-------
소개팅을 하고 싶은 나
나이, 키, 얼굴을 정하려 합니다.
하지만 나이랑 키만 정하고 얼굴은 정하지 않아도 사용하고 싶어요!

그래서 convenience init을 이용하여 tall과 age만 넣어도, 자동으로 face는 "pretty"로 인스턴스를 생성할 수 있게 만들어 놓았습니다

class BlindDate {
  var tall: Int
  var age: Int
  var face: String

    init(tall: Int, age: Int, face: String) {
        self.tall = tall
        self.age = age
        self.face = face
    }
    
    convenience init(tall: Int, age: Int) {
        self.init(tall: tall, age: age, face: "pretty")
    }
}

다음과 같이 secondBlindDate에서 face를 지정해주지 않아도 pretty가 print되는 것을 볼 수 있습니다!

지정생성자(init)는 모든 프로퍼티를 초기화하기 위해서 파라미터로 모든 값을 입력받아야 하지만, 편의 생성자(convenience init)를 통해 지정생성자(init)의 입력 파라미터를 줄여 초기화를 간편하게 제공할 수 있습니다.

이해가 되셨나요??!

profile
iOS Developer

0개의 댓글