초기화(Initialization)
💡 초기화(Initialization)
- Instance(인스턴스)가 생성될 때 프로퍼티를 초기화하는 프로세스
→ 클래스, 구조체, 열거형 등의 타입에서 사용됨
Instance(인스턴스)란?
- 클래스, 구조체 또는 열거형과 같은 타입의 템플릿을 사용하여 생성된 실제 객체 말함
- 클래스나 구조체 등의 템플릿(틀)을 기반으로 생성된 실제 데이터를 가리킴
→ 즉, 클래스나 구조체를 기반으로 만들어진 객체를 인스턴스라고 함
예시
클래스는 이름과 나이를 저장할 수 있는 프로퍼티를 가지고 있을 것이다.
→ 이 클래스를 사용하여 실제 사람 객체를 생성하면 그것이 해당 클래스의 인스턴스가 된다.
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// Person 클래스의 인스턴스 생성
let person1 = Person(name: "John", age: 30)
위 코드에서 person1은 Person 클래스의 인스턴스이다. 이 인스턴스는 name 프로퍼티에 "John"을, age 프로퍼티에 30을 가지고 있으며, 인스턴스를 통해 해당 클래스의 속성에 접근하거나 메서드를 호출할 수 있다.
초기화 방법
기본 초기화(Default Initialization)
모든 프로퍼티가 기본값을 가지고 있는 경우, 별도의 초기화 메서드를 작성하지 않아도 자동으로 기본 초기화가 가능
→ 이때 생성되는 이니셜라이저를 기본 이니셜라이저(Default Initializer)라고 함
class Person {
var name: String = ""
var age: Int = 0
}
let person = Person() // 기본 초기화
지정 초기화(Designated Initialization)
init 키워드를 사용하여 클래스의 모든 속성을 초기화하는 메서드
클래스나 구조체의 주요 초기화 메서드로, 모든 저장 프로퍼티를 초기화하는 역할을 함
보통 클래스나 구조체에는 하나 이상의 지정 초기화 메서드가 존재함
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let person = Person(name: "John", age: 30) // 지정 초기화
편의 초기화(Convenience Initialization)
convenience 키워드를 사용하여 선언
지정 초기화 메서드나 다른 편의 초기화 메서드를 호출하여 초기화하는 보조(initializer)
→ 클래스나 구조체의 초기화를 더 간단하게 할 수 있음
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
convenience init(name: String) {
self.init(name: name, age: 0)
}
}
let person = Person(name: "Alice") // 편의 초기화 사용
강제 해제(Force Unwrapping)되지 않는 옵셔널 초기화
옵셔널 타입을 가진 속성은 선언과 동시에 초기화되거나 나중에 값을 할당할 수 있음
옵셔널 변수에 접근할 때 강제 해제 연산자(!)를 사용하지 않고 옵셔널 바인딩을 통해 값 추출
class Person {
var name: String?
var age: Int = 0
}
let person = Person()
person.name = "Emily"
person.age = 25
' 𝗔𝗣𝗣𝗟𝗘 > SWIFT : GRAMMAR' 카테고리의 다른 글
Swift 기초 문법 - 타입 캐스팅(Type Casting) (0) | 2024.03.12 |
---|---|
Swift 기초 문법 - 프로퍼티 옵저버 (0) | 2024.03.12 |
Swift 기초 문법 - 상속(Inheritance) (0) | 2024.03.11 |
Swift 기초 문법 - 클래스, 구조체, 열거형 (0) | 2024.03.11 |
Swift 기초 문법 - 객체 지향(OOP) (0) | 2024.03.08 |