[swift] Swift 클래스 초기화와 인스턴스 메모리 할당

Swift에서 클래스를 사용할 때, 클래스 초기화와 인스턴스 메모리 할당에 대한 이해는 중요합니다. 이 포스트에서는 Swift에서의 클래스 초기화와 인스턴스 메모리 할당에 대해 알아보겠습니다.

클래스 초기화

클래스 초기화는 클래스의 인스턴스를 생성하기 위해 메모리를 할당하는 과정입니다. Swift에서는 클래스 초기화를 위해 init 키워드를 사용합니다. 클래스의 초기화 메소드는 클래스의 프로퍼티를 초기화하고 인스턴스를 사용할 준비를 합니다.

class MyClass {
    var name: String

    init() {
        name = "Unknown"
    }
}

위의 예제에서는 MyClass라는 클래스를 정의하고, name이라는 프로퍼티를 가지고 있습니다. init 메소드에서는 name 프로퍼티를 “Unknown”으로 초기화합니다.

인스턴스 메모리 할당

클래스의 인스턴스를 생성할 때는 클래스이름() 형태의 생성자를 사용합니다.

let myInstance = MyClass()

위의 예제에서는 myInstance라는 변수에 MyClass의 인스턴스를 할당합니다. 이 과정에서는 메모리가 할당되고, init 메소드가 호출되어 인스턴스의 프로퍼티가 초기화됩니다.

초기화 매개변수

클래스 초기화 시에는 초기화 매개변수를 사용할 수도 있습니다. 초기화 매개변수는 인스턴스 생성 시에 받는 값으로, 초기화 메소드의 매개변수로 사용됩니다.

class Person {
    var name: String

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

let person = Person(name: "John")

위의 예제에서는 Person 클래스를 정의하고, name 프로퍼티와 init 메소드를 사용합니다. init 메소드는 name 매개변수를 받아서 인스턴스를 초기화합니다.

참조와 값 타입

클래스는 참조 타입이기 때문에, 인스턴스를 변수나 상수에 할당하면 참조를 할당합니다. 이는 인스턴스의 메모리 주소를 가리키게 되며, 같은 인스턴스를 여러 변수 또는 상수에 할당할 수 있습니다.

반면에, 값 타입인 구조체나 열거형은 값 자체를 할당하기 때문에, 변수나 상수에 할당하면 복사가 이루어집니다.

결론

Swift에서 클래스 초기화와 인스턴스 메모리 할당에 대해 알아보았습니다. 클래스 초기화는 init 메소드를 통해 이루어지고, 인스턴스는 생성자를 사용하여 메모리가 할당됩니다. 클래스는 참조 타입이기 때문에 같은 인스턴스를 다른 변수나 상수에 할당할 수 있습니다.