이니셜라이저 – Swift

Swift의 클래스와 구조체, enum 객체들은 사용하기 전에 반드시 초기화되어야 한다. 그러면 초기화(initialization)이란 무엇인가? 객체의 생성 자체를 초기화과정에 포함시키는 관점과 그렇지 않은 관점이 있지만, 여기서는 “객체를 만들어서 사용가능한 상태로 준비하는 일”이라고 보자. let foo = Foo() 와 같이 특정한 타입의 인스턴스를 생성하는 구문을 실행했을 때 저 아래(?)에서 벌어지는 과정은 다음과 같다.

이니셜라이저 – Swift 더보기

Swift의 클래스 초기화

공식 문서 일부를 번역한 글 입니다. (수정: 2019.06.18)

용어 번역 및 의미

  • initializer – 초기화 메소드. 객체 인스턴스가 생성될 때 호출되는 init(*)류의 이니셜라이저
  • designated initailizer – 지정 초기화메소드. 해당 클래스 레벨에서 새롭게 추가된 프로퍼티를 모두 초기화할 수 있는 메소드. 부모 클래스의 지정 초기화메소드를 호출해야 한다.
  • convenience initializer – 편의 초기화메소드. 프로퍼티에 적절한 기본값을 추가하여 호출을 간단하게 만든 초기화메소드. 반드시 해당 클래스의 지정 초기화 메소드를 호출해야 한다.
  • 초기화 – Swift에서는 객체를 생성할 때 객체가 요구하는 크기만큼의 메모리를 할당받은 후, 모든 프로퍼티는 해당 객체가 사용되기 전에 반드시 적절한 초기값을 가져야 한다. 프로퍼티에 초기값을 지정해 주는 행위
  • 멤버 – 프로퍼티. 일반적인 의미로 멤버라고 부른다.

클래스 상속과 초기화

프로퍼티가 자동으로 0 혹은 nil로 초기화되는 Objective-C와는 달리 Swift에서는 모든 저장 프로퍼티에 대해서 명시적으로 초기화가 이루어져야 한다. (그렇지 않은 경우 컴파일러가 오류를 내놓는다.)

Swift의 클래스 초기화 더보기