[Swift] convenience init 이제는 알아야지!?
IT/Swift

[Swift] convenience init 이제는 알아야지!?

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

다들 아시다시피, 
class를 생성 시 init을 통해서 모든 프로퍼티들을 초기화 해줘야 합니다.

그럼 convenience init은 뭘까요? 

convenience 라는 이름부터 우리에게 굉장히 편리함을 줄 것 같은 느낌이네요. 


init과의 차이점을 상황을 예시로 들어 쉽게 설명해보겠습니다.

상황)  
레스토랑을 운영하고 있는 나!
메뉴의 이름과 가격을 정하려 합니다. 

하지만, 이름을 정하지 않았더라도 가격만 넣어놓을 수 있게 하고 싶었어요. 

- 원래) init은 다음과 같이 모든 프로퍼티를 초기화해줘야 합니다. 

- 만약 1개라도 빼먹는다면, 에러가 발생합니다. 

위에서 말했듯이, 가격만 정해도 사용할 수 있게 만들고 싶어요! 

- 그래서  convenience init을 이용해서 가격만 넣어도, 자동으로 dishName은 "미정" 으로 인스턴스를 생성할 수 있게 만들어 놓았습니다!

- 다음과 같이 이름을 지정하지 않은 secondMenu의 이름은 미정이라고 출력된게 보이시죠? 


정리


convenience init은

init이 모든 프로퍼티를 전달받지 않았을 때?  일부 프로퍼티만 있을 때? 의 상황을 대비하여 
에러가 뜨지않게 미리 예약해놓는 느낌의 보조 이니셜라이저입니다.

 

사용방법 유의
init의 보조이기 때문에 위에서 선언한 init을 활용해서 사용하셔야 합니다.