Swift의 Class에서 지원하는 initializer
1. Designated initializer
2. Convenience initializer
3. Required initializer
4. Failable initializer
5. Deinitializers
Convenience initializer
Designated initializer보다 적은 개수의 파라미터로 편리하게 인스턴스를 생성하기 위한 initializer로 필요해 의해 구현해 사용하며 다음과 같은 특징이 있다.
- Convenience initializer는 반드시 다른 Convenience initializer를 호출하거나 Designated initializer를 호출해야 함( 궁극적으로는 Designated initializer를 호출해야 한다)
- 상속했을때 하위의 클래스에서 재정의, 호출이 불가하다 { 예외 : 상위 클래스와 모든 동일한 Designated initializer가 존재하면(상위의 Designated initializer 모두 자동 상속 or 상위의 Designated initializer 모두 재정의) 예외적 자동 상속됨 }
class Aclass {
var x: Int
var y: Int
init(x: Int, y: Int) { // 지정생성자 - 모든 저장 속성 설정
self.x = x
self.y = y
}
convenience init() { // 편의생성자 - (조금 편리하게 생성) 모든 저장 속성을 설정하지 않음
self.init(x: 0, y: 0)
}
}
Designated와 Convenience 호출 관계
위 그림에서는 Convenience initializer가 Designated initializer만 호출하고 있지만 궁극적으로 Designated initializer만 호출하고 있다면 Convenience intializer가 다른 Convenience initializer를 호출하는 구조도 가질 수 있다.
'iOS > Swift' 카테고리의 다른 글
[Swift] String과 Substring을 메모리에서 효율적으로 관리하는 방법 (0) | 2023.02.18 |
---|---|
[Swift] 문자열은 무엇으로 구성되어 있을까? - Extended Grapheme Clusters (0) | 2023.02.18 |
[Swift] CoW(Copy on Write)의 동작방식 + 메모리 주소 디버깅 (1) | 2023.02.16 |
[Swift] Class의 성능을 향상 시킬수 있는 방법 :: Static Dispatch (0) | 2023.02.09 |
[Swift] Class, Struct, Enum의 차이점을 알아보자 (0) | 2023.02.09 |