Swift에서는 클래스, 구조체, 열거형 등 다양한 타입을 사용하여 프로그래밍을 할 수 있습니다. 이러한 타입들은 자체적으로 속성을 가지며, 이를 프로퍼티(Property)라고 합니다. 프로퍼티는 해당 타입의 인스턴스를 생성할 때 값을 초기화하는 역할을 합니다.
프로퍼티는 초기값을 가지거나, 나중에 값을 할당받을 수도 있습니다. 이 초기화 작업은 해당 타입의 init() 메서드를 통해 수행할 수 있습니다. 이번 포스트에서는 Swift에서 프로퍼티의 초기화 방법을 알아보도록 하겠습니다.
기본값으로 초기화하기
프로퍼티에 초기값을 할당하는 가장 간단한 방법은 기본값(default value)을 지정하는 것입니다. 이렇게 하면 해당 프로퍼티는 인스턴스를 생성할 때 자동으로 초기값을 갖게 됩니다. 예를 들어, 다음과 같이 Person 클래스가 있다고 가정해봅시다.
class Person {
var name: String = "Unknown"
var age: Int = 0
var height: Double = 0.0
}
위의 코드에서 name
, age
, height
프로퍼티는 모두 기본값을 가지도록 선언되었습니다. 이를 통해 Person 인스턴스를 생성할 때 기본값으로 초기화할 수 있습니다.
let person = Person()
print(person.name) // "Unknown"
print(person.age) // 0
print(person.height) // 0.0
옵셔널 프로퍼티 초기화
프로퍼티에 기본값을 지정할 수 없는 경우, 옵셔널(Optional)로 선언하여 초기화할 수 있습니다. 이는 해당 프로퍼티가 값이 없을 수도 있다는 것을 의미합니다. 예를 들어, 다음과 같은 Car 클래스가 있다고 가정해봅시다.
class Car {
var brand: String?
var year: Int?
init(brand: String, year: Int) {
self.brand = brand
self.year = year
}
}
위의 코드에서 brand
와 year
프로퍼티는 옵셔널 타입으로 선언되어 있습니다. 이를 통해 Car 인스턴스를 생성할 때 brand
와 year
값을 전달할 수도 있고, 전달하지 않을 수도 있습니다.
let car1 = Car(brand: "Tesla", year: 2022)
print(car1.brand) // Optional("Tesla")
print(car1.year) // Optional(2022)
let car2 = Car(brand: "BMW", year: nil)
print(car2.brand) // Optional("BMW")
print(car2.year) // nil
초기화 메서드에서 프로퍼티 초기화하기
프로퍼티 초기화는 인스턴스를 생성할 때 직접 할당하는 것 외에도, 초기화 메서드를 통해 값을 할당할 수도 있습니다. 초기화 메서드는 해당 타입에 정의된 init() 메서드를 호출하여 프로퍼티를 초기화합니다.
예를 들어, 다음과 같은 Book 클래스가 있다고 가정해봅시다.
class Book {
var title: String
var author: String
init(title: String, author: String) {
self.title = title
self.author = author
}
}
위의 코드에서 title
과 author
프로퍼티는 초기화 메서드를 통해 전달된 값으로 초기화됩니다.
let book = Book(title: "Swift Programming", author: "John Smith")
print(book.title) // "Swift Programming"
print(book.author) // "John Smith"
참조타입의 프로퍼티 초기화
Swift에서 클래스는 참조타입이므로, 클래스의 인스턴스를 다른 변수나 상수에 할당하면 같은 인스턴스를 참조하게 됩니다. 이 경우에는 초기화된 인스턴스를 참조하는 변수나 상수를 통해 프로퍼티에 접근할 수 있습니다.
let person1 = Person()
person1.name = "Alice"
person1.age = 25
let person2 = person1
print(person2.name) // "Alice"
print(person2.age) // 25
person1.name = "Bob"
print(person2.name) // "Bob"
위의 예시에서 person2
변수는 person1
변수가 참조하는 Person 인스턴스와 같은 인스턴스를 참조하게 됩니다. 따라서 person2
를 통해 person1
의 프로퍼티에 접근하면 동일한 값이 출력됩니다.
결론
Swift에서의 프로퍼티 초기화는 기본값을 설정하거나, 옵셔널 타입으로 선언하거나, 초기화 메서드를 통해 값을 할당하는 방법 등 다양합니다. 초기화된 프로퍼티를 통해 객체를 생성하고 속성에 접근할 수 있는데, 이를 통해 Swift의 강력한 객체 지향 프로그래밍 기능을 활용할 수 있습니다.
참고 자료: