lunchScreen/Interview_Questions

Convinience init에 대해 설명하시오.

Opened this issue · 4 comments

Convinience init에 대해 설명하시오.

Swift 에는 Designated init, Convinience int 이 존재합니다.
일단 Designated init(init 이라고도 불림) 은 swift의 초기화 이니셜라이저로, 클래스의 모든 프로퍼티를 초기화시키는 역할을 합니다.

Convenience init 은 보조 이니셜라이저로, 일부 프로퍼티를 원하는 값으로 저장하는 역할을 합니다. Convenience init 안에서는 Designated init을 호출해야 하기 때문에 init 과 항상 함께 만들어져야한다는 특징이 있습니다.

Convenience init은 생성자를 도와주는 보조 생성자로 모든 프로퍼티를 초기화 하는 것 외에도 추가적인 작업을 하도록 도와주는 생성자입니다. Convenience init은 내부에서 꼭 Designated init을 호출해주어야 합니다.

Designated init은 모든 타입을 초기화 해줘야 하고, class 타입에선 반드시 한개 이상의 Designated init이 필요합니다.
Convenience init은 필수적으로 구현해야 하는 것은 아니며 내부에서 반드시 Designated init이 실행되어야 합니다. Designated init의 파라미터중 일부를 기본값으로 설정하여 사용하거나, parameter를 다르게 넣어서 생성할 때 사용합니다.

일종의 보조 이니셜라이저로, 내부에서 designated init을 호출해서 좀 더 쉽게 초기화가 가능하도록 도와줍니다. designated init과 다르게 모든 멤버변수를 초기화할 필요가 없고 내부에서 designated init을 호출하는 것만 필수적인 조건이기 때문에 주로 보조적인 초기화 수단으로 많이 쓰입니다.