swift

swift - Initializer and Deinitializer #1 (Initializer)

행복하게사는게꿈 2021. 1. 12. 15:13

Initializer

 

열거형, 구조체, 클래스는 모두 설계도

 

설계도를 기반으로 생성한것이 Instance 

 

새로운 instance를 생성하는 것이 초기화 (Initialization) -> 모든 속성이 기본값을 가지고 있다.

 


Initialization

// 초기화 방식

class Position {
    // 1. 선언과 동시에 기본값 저장
    // 2. initializaion에서 초기화
    
    var x = 0.0
    var y: Double
    var z: Double? // Optional 속성은 기본값을 저장하지 않으면 자동으로 nil로 초기화 되기 때문에 init필요 없음
    
    init() {
        y = 0.0
    }
}

class Position2 {
    // 이렇게 기본값을 다 넣어주고 init을 선언하지 않으면 자동으로 기본 default initization이 암묵적으로 생성된다.
    var x = 0.0
    var y = 0.0
    var z: Double? = nil
}

let p = Position2()


class SizeObj {
    var width = 0.0
    var height = 0.0
    
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }
    
    convenience init(value: Double) {
//        width = value
//        height = value
        
        // init delegate
        self.init(width: value, height: value)
    }
}

Memberwise Initializer

 

// 구조체는 memberwise initializer 지원

struct SizeValue {
    var width = 0.0
    var height = 0.0
}

let s = SizeValue()
// init을 직접구현 하지 않으면 밑에 init을 자동으로 제공한다.
SizeValue(width: 1.2, height: 3.4)