init과 비슷하지만, 보조 역할을 하는 convenience init에 대해서 알아보겠습니다.
다들 아시다시피,
class를 생성 시 init을 통해서 모든 프로퍼티들을 초기화 해줘야 합니다.
그럼 convenience init은 뭘까요?
convenience 라는 이름부터 우리에게 굉장히 편리함을 줄 것 같은 느낌이네요.
init과의 차이점을 상황을 예시로 들어 쉽게 설명해보겠습니다.
상황)
레스토랑을 운영하고 있는 나!
메뉴의 이름과 가격을 정하려 합니다.
하지만, 이름을 정하지 않았더라도 가격만 넣어놓을 수 있게 하고 싶었어요.
- 원래) init은 다음과 같이 모든 프로퍼티를 초기화해줘야 합니다.
- 만약 1개라도 빼먹는다면, 에러가 발생합니다.
위에서 말했듯이, 가격만 정해도 사용할 수 있게 만들고 싶어요!
- 그래서 convenience init을 이용해서 가격만 넣어도, 자동으로 dishName은 "미정" 으로 인스턴스를 생성할 수 있게 만들어 놓았습니다!
- 다음과 같이 이름을 지정하지 않은 secondMenu의 이름은 미정이라고 출력된게 보이시죠?
정리
convenience init은
init이 모든 프로퍼티를 전달받지 않았을 때? 일부 프로퍼티만 있을 때? 의 상황을 대비하여
에러가 뜨지않게 미리 예약해놓는 느낌의 보조 이니셜라이저입니다.
사용방법 유의
init의 보조이기 때문에 위에서 선언한 init을 활용해서 사용하셔야 합니다.
'IT > Swift' 카테고리의 다른 글
[Swift 스위프트] let과 var차이 (0) | 2021.08.22 |
---|---|
[iOS의 Swift] 옵셔널 바인딩 Optional binding (0) | 2021.08.10 |
[Swift 스위프트] print 사용방법에 대해 - print(_:seprator:terminator) - 티스토리 (0) | 2021.07.12 |
[Swift | 공식문서 읽기] 함수 선언 방법과 매개변수에 대해서 알아보자(1) (0) | 2021.07.10 |