Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intinalizer & Convenience init #5

Closed
5 tasks done
Glsme opened this issue Dec 20, 2022 · 5 comments
Closed
5 tasks done

Intinalizer & Convenience init #5

Glsme opened this issue Dec 20, 2022 · 5 comments
Labels

Comments

@Glsme
Copy link
Contributor

Glsme commented Dec 20, 2022

2022.12.26 (월) 모임 전까지 작성해주세요.

  • 김도이
  • 윤여진
  • 홍석준
  • 이주영
  • 이재용
@Glsme Glsme added the Swift label Dec 20, 2022
@Glsme Glsme changed the title Intinalizer, Convenience init 설명 Intinalizer & Convenience init Dec 20, 2022
@Yun-YeoJin
Copy link
Contributor

  • 초기화는 Class, Struct, Enum 인스턴스를 사용하기 위한 준비 작업, 각 저장 프로퍼티의 초기 값을 설정.
  • 특정 타입의 인스턴스를 생성, 파라미터가 없는 init() 키워드를 사용.
  • 옵셔널 타입은 init()이 없어도 된다. -> 옵셔널 타입 프로퍼티는 인스턴스가 만들어질 때, nil로 초기화가 된다.

@heydoy
Copy link
Member

heydoy commented Dec 26, 2022

Initializers

생성자는 특정 타입의 새 인스턴스를 생성할 때 호출됨. 가장 기본적인 형태로는 파라미터가 없는 인스턴스 메서드와 같음.

init() {
 // 여기서 초기화를 실행 
}

Designated and Convenience initializers

init(파라미터) {
   // 구문
}
convenience init(파라미터) {
   // 구문
} 

클래스타입의 이니셜라이저 위임 규칙

  1. 지정 이니셜라이저는 반드시 바로 위 수퍼 클래스의 지정 이니셜라이저를 호출해야함.
  2. Convenience 이니셜라이저는 같은 클래스의 다른 이니셜라이저를 호출해야함.
  3. Convenience 이니셜라이저는 반드시 지정 이니셜라이저를 온전히 호출해야함.

image

@wodyddml2
Copy link

initializer은 특정 타입의 새로운 인스턴스를 만들기 위해 호출되며
기본 형태는 인자 없는 인스턴스 메서드와 유사한 형식으로 init 키워드를 사용한다.

Convenience init은 init을 보조하는 역할
같은 클래스에서 반드시 Designated init을 호출해야하한다. (init은 모든 멤버들을 초기화가 보장되므로)

@Glsme
Copy link
Contributor Author

Glsme commented Jan 2, 2023

initializer는 모든 저장 속성 초기화를 통한 인스턴스를 생성하는 것이다.

  • 오버로딩을 지원한다. 따라서 다양한 파라미터 조합으로 생성자를 여러개 구현이 가능하다.

convenience init은 지정 생성자보다 더 적은 개수의 파라미터로 보다 편리하게 생성하기 위한 생성자이다.

  • 초기화 과정을 간편하게 제공하기 위함이다.
  • 편의생성자의 경우 서브클래스에서 재정의를 못한다. (하위 클래스에서 호출불가가 원칙이다.)
  • 구조체(열거형)의 경우, convenience 키워드를 붙이지 않아도 다른 생성자를 호출이 가능하다.

@LeeJoobang
Copy link

initializer
: swift의 초기화 이니셜라이즈이다. 모든 프로퍼티가 초기화 될 수 있도록 한다.
convenience init
: 보조 이니셜 라이즈다. 위의 initializer를 돕는 보조적인 열할을 한다고 볼 수 있다.
: 구체적으로 이미 초기화된 프로퍼티의 값의 전부가 아닌 일부를 기본값으로 지정해 놓는 것이다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants