Swift에서는 초기화 중복을 방지하기 위해 몇 가지 요구사항을 가지고 있습니다. 초기화 중복은 동일한 객체를 여러 번 초기화하려고 할 때 발생하는 문제로, 이는 예상치 못한 동작을 일으킬 수 있습니다. 따라서 Swift는 초기화 중복을 방지하기 위해 명시적으로 처리해야 하는 규칙을 제공합니다.
1. Designated initializer와 Convenience initializer
Swift에서는 Designated initializer
와 Convenience initializer
라는 두 가지 종류의 초기화 메서드를 사용합니다. Designated initializer
는 주로 초기화 작업을 담당하며, Convenience initializer
는 보조적인 역할을 수행합니다. 여러 개의 초기화 메서드가 있을 때, Designated initializer
는 반드시 호출되어야 하며, Convenience initializer
는 Designated initializer
를 호출하여 중복 초기화를 막아야 합니다.
2. Convenience initializer
는 반드시 같은 클래스 내에서 다른 초기화 메서드를 호출해야 함
Swift에서는 Convenience initializer
가 다른 초기화 메서드를 호출해야 한다는 제약이 있습니다. 이는 초기화 중복을 방지하기 위한 조치로, Convenience initializer
는 항상 동일한 클래스 내에서 다른 초기화 메서드를 호출해야 합니다. 이를 통해 초기화 중복을 방지하고, 객체의 초기화 순서를 명확하게 정의할 수 있습니다.
3. 클래스 상속 시 초기화 중복
Swift에서는 클래스 상속을 수행할 때 초기화 중복을 막기 위해 몇 가지 규칙을 따라야 합니다. 자식 클래스에서 초기화 메서드를 구현할 때, 부모 클래스의 Designated initializer
를 호출해야 합니다. 이를 통해 초기화 순서를 명시하고 초기화 중복을 방지할 수 있습니다.