본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/SWIFT : GRAMMAR

Swift 기초 문법 - 초기화(Initialization)

 

 

 

 

초기화(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
 

 

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31