본문 바로가기
#모바일 [Mobile]/iOS

[iOS] 2단계 초기화 (Two-Phase Initialization)

by cy_mos 2022. 3. 3.
반응형
카테고리 게시글 작성 날짜 게시글 최근 수정 날짜 작성자
iOS 2022.03.03. 01:19 2022.03.03. 01:19 Dev.Yang

 

Swift 언어에서 클래스 (Class) 초기화 과정은 Two-Phase Initialization 과정을 통하여 초기화 작업을 수행합니다. Two-Phase Initialization 초기화 과정은 아래와 같습니다.

 

  • 첫번째 단계는 클래스 (Class) 내에 Properties들에 대하여 초기 값을 할당하여 초기화 작업을 수행합니다.
  • 두번째 단계는 첫 번째 단계에서 초기 값을 할당 한 Properties에 대한 초기 상태가 결정이 되면 클래스 (Class)에 대한 새로운 인스턴스를 사용하기 전에 저장 된 Properties에 대하여 Customize 초기화 작업을 수행할 수 있습니다.

 

또한, Swift Two-Phase Initialization 과정은 Objective-C 언어에서의 초기화와 유사합니다. 다른점은 첫 단계인 클래스 (Class) 정의 된 Properties에 대하여 초기화 시 Objective-C 초기화는 0 또는 NULL 값만을 할당 할 수 있는 반면에 Swift는 개발자가 유연하게 초기 값을 지정할 수 있습니다.

 

 

Two-Phase Initialization 과정에 대한 소스코드는 아래와 같습니다.

 

class Shape {
    var numberOfSides: Int = 0
    var name: String

    init(name: String) {
       self.name = name
    }
}

class Square: Shape {
    var sideLength: Double = 0.0

    init(sideLength: Double, name: String) {
        self.sideLength = sideLength 	/// 1. 첫번째로 자식 클래스의 속성에 값 할당
        super.init(name: name) 			/// 2. 두번째로 부모 클래스의 이니셜라이저 호출
        numberOfSides = 4 				/// 3. 세번째로 부모 클래스가 정의한 속성 값 변경
    }
}

🚀 REFERENCE

반응형

댓글