다들 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)의 입력 파라미터를 줄여 초기화를 간편하게 제공할 수 있습니다.
이해가 되셨나요??!