HIT해

[Swift 기초문법 - 12] 객체 생성자, 해제자 본문

Swift/Swift 기초문법

[Swift 기초문법 - 12] 객체 생성자, 해제자

힛해 2024. 7. 11. 03:51
728x90

Swift에서 객체 생성자와 해제자는 클래스나 구조체의 인스턴스를 초기화하고 해제할 때 사용된다.

이 개념을 이해하면 객체 지향 프로그래밍에서 메모리 관리를 더 효율적으로 할 수 있다!

객체 생성자 (Initializer)

생성자는 클래스나 구조체의 인스턴스를 초기화하는 역할을 한다.

Swift에서 생성자는 init 키워드를 사용하여 정의된다.

기본 생성자 외에도 매개변수를 받는 생성자, 그리고 편의 생성자(convenience initializer) 등을 정의할 수 있다!

import UIKit

class Person {
    var name: String
    var age: Int
    
    // 기본 생성자
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    
    // 편의 생성자
    convenience init() {
        self.init(name: "Unknown", age: 0)
    }
}

let person1 = Person(name: "Alice", age: 30)
let person2 = Person() // name은 "Unknown", age는 0으로 초기화됨

 

객체 생성 결과

 

 

기본 생성자는 필수 프로퍼티를 모두 초기화해야 하며, 편의 생성자는 다른 생성자를 호출하여 초기화를 간소화할 수 있다!

 

객체 해제자 (Deinitializer)

해제자는 클래스 인스턴스가 메모리에서 해제될 때 호출된다.

Swift에서는 deinit 키워드를 사용하여 해제자를 정의한다.

해제자는 클래스에만 존재하며, 인스턴스가 더 이상 필요하지 않을 때 리소스를 정리하는 데 사용된다!

 

class FileHandler {
    var fileName: String
    
    init(fileName: String) {
        self.fileName = fileName
        print("\(fileName) 파일 열기")
    }
    
    deinit {
        print("\(fileName) 파일 닫기")
    }
}

if true {
    let handler = FileHandler(fileName: "data.txt")
    // handler 인스턴스는 이 블록이 종료되면 메모리에서 해제됨
}
// "data.txt 파일 닫기" 출력됨

 

Swift에서 생성자와 해제자는 객체의 생명 주기를 관리하는 중요한 도구이다.

생성자는 객체를 초기화하고, 해제자는 객체가 더 이상 필요하지 않을 때 리소스를 정리한다.

이 두 가지를 잘 활용하면 메모리 누수를 방지하고, 더 안정적인 코드를 작성할 수 있다!