[swift] 초기화(Initialization)

Swift는 객체 생성 시 초기화를 위한 특별한 메서드, 즉 이니셜라이저(Initializer)를 제공합니다. 이니셜라이저는 새로운 인스턴스가 생성될 때 초기화 과정을 수행하여 모든 프로퍼티에 적절한 값을 할당합니다.

기본 초기화

기본 초기화는 모든 프로퍼티에 초기값을 제공하거나 옵셔널값이 아닌 모든 프로퍼티에 초기화를 보장하는 이니셜라이저입니다. 다음은 기본 초기화 예시입니다.

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

위의 예제에서 Person 클래스는 nameage라는 두 개의 프로퍼티를 가지고 있습니다. init 키워드를 사용하여 기본 초기화를 정의하였습니다.

옵셔널 초기화

옵셔널 초기화는 모든 프로퍼티에 초기값을 제공하지 않고, 옵셔널값으로 초기화하는 이니셜라이저입니다. 다음은 옵셔널 초기화 예시입니다.

class Car {
    var model: String
    var year: Int?

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

위의 예제에서 Car 클래스는 modelyear라는 두 개의 프로퍼티를 가지고 있습니다. year 프로퍼티는 옵셔널(Int?)로 정의되어 있어서 초기값을 제공하지 않아도 됩니다.

실패 가능한 초기화

실패 가능한 초기화는 초기화가 실패하였을 때 nil을 반환하는 이니셜라이저입니다. 이 때문에 초기화가 실패할 수 있는 조건에 대한 로직을 포함해야 합니다. 실패 가능한 초기화는 init? 키워드를 사용하여 정의합니다. 다음은 실패 가능한 초기화 예시입니다.

class Circle {
    var radius: Double

    init?(radius: Double) {
        guard radius >= 0 else {
            return nil
        }
        self.radius = radius
    }
}

위의 예제에서 Circle 클래스는 radius라는 프로퍼티를 가지고 있으며, 이니셜라이저에서 주어진 반지름 값이 음수이면 초기화를 실패하도록 구현하였습니다.

Swift의 초기화는 객체지향 프로그래밍에서 매우 중요한 부분이며, 안정성을 위해 이를 정확하게 이해하고 활용하는 것이 중요합니다.

더 자세한 내용은 Swift 공식 문서를 참고하세요.