Swift는 객체 생성 시 초기화를 위한 특별한 메서드, 즉 이니셜라이저(Initializer)를 제공합니다. 이니셜라이저는 새로운 인스턴스가 생성될 때 초기화 과정을 수행하여 모든 프로퍼티에 적절한 값을 할당합니다.
기본 초기화
기본 초기화는 모든 프로퍼티에 초기값을 제공하거나 옵셔널값이 아닌 모든 프로퍼티에 초기화를 보장하는 이니셜라이저입니다. 다음은 기본 초기화 예시입니다.
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
위의 예제에서 Person 클래스는 name과 age라는 두 개의 프로퍼티를 가지고 있습니다. init 키워드를 사용하여 기본 초기화를 정의하였습니다.
옵셔널 초기화
옵셔널 초기화는 모든 프로퍼티에 초기값을 제공하지 않고, 옵셔널값으로 초기화하는 이니셜라이저입니다. 다음은 옵셔널 초기화 예시입니다.
class Car {
var model: String
var year: Int?
init(model: String) {
self.model = model
}
}
위의 예제에서 Car 클래스는 model과 year라는 두 개의 프로퍼티를 가지고 있습니다. 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 공식 문서를 참고하세요.