Swift 이니셜라이저: 클래스와 구조체를 위한 필수 구성 요소

Sam·2023년 11월 26일
post-thumbnail

Swift에서 클래스, 구조체, 또는 열거형을 사용할 때, 그것들의 인스턴스를 올바르게 초기화하는 것은 매우 중요합니다. 이 포스트에서는 Swift의 다양한 이니셜라이저와 그 사용법에 대해 알아보겠습니다.

1. initializer란 무엇인가?

💡 초기화 (initializer )는 사용할 클래스나, 구조체, 또는 열거체 인스턴스를 준비하는 과정 입니다.

이 과정은 인스턴스의 각 저장 속성마다 초기값을 설정하는것, 그리고 새 인스턴스를 사용하기 전에 필수인 다른 어떤 설정이나 초기화를 하는 것 입니다

2. 다양한 이니셜라이저의 종류

Swift는 여러 종류의 이니셜라이저를 제공합니다. 각각의 특징과 사용 시점을 알아봅시다.

designated initializer
클래스의 주요 이니셜라이저로, 모든 속성을 완전히 초기화하고 상위 클래스의 이니셜라이저를 호출합니다.

class MyClass {
    var property: DataType

    init(property: DataType) {
        self.property = property
    }
}

convenience initializer
지원용 이니셜라이저로, 동일한 클래스의 designated initializer를 보조하는 역할을 합니다. 일부 매개변수에 기본값을 설정하여 사용할 수 있습니다.

class MyClass {
    var property: DataType

    convenience init() {
        self.init(property: DefaultValue)
    }
}

failable initializer
특정 조건에서 초기화가 실패할 수 있는 이니셜라이저입니다. 실패 시 nil을 반환합니다.

struct Temperature {
    var celsius: Int

    init?(celsius: Int) {
        if celsius < -273 {
            return nil
        }
        self.celsius = celsius
    }
}

deinitializer
클래스 인스턴스가 메모리에서 해제되기 바로 전에 호출되는 메소드입니다. 주로 자원 해제나 정리 작업에 사용됩니다.

class FileHandler {
    var filePath: String

    init(filePath: String) {
        self.filePath = filePath
        // 파일 열기 또는 생성 로직
    }

    deinit {
        // 파일 닫기 로직
    }
}

프로퍼티 기본값 vs 이니셜라이저

프로퍼티 기본값과 이니셜라이저를 사용하여 초기값을 주입하는 것은 서로 다른 상황에 적합합니다.

프로퍼티 기본값: 모든 인스턴스에 동일한 초기값을 자동으로 설정합니다. 간단하고 명확한 경우에 적합합니다.
이니셜라이저: 초기 생성 시 다양한 초기값을 제공할 수 있어 유연합니다. 상황에 따라 다른 초기값이 필요한 경우에 적합합니다.
이니셜라이저는 Swift에서 객체 지향 프로그래밍의 핵심 요소 중 하나입니다. 올바른 이니셜라이저를 선택하고 사용함으로써, 안정적이고 유연한 코드를 작성할 수 있습니다.

profile
안녕하세요 iOS 개발자를 꿈꾸는 새싹입니다.

0개의 댓글