swift class struct difference

agnusdei·2023년 8월 9일
0
post-custom-banner

클래스(Class)와 구조체(Struct)는 Swift에서 데이터를 모델링하고 관리하기 위한 두 가지 주요한 타입입니다. 하지만 각각의 특징과 용도가 다르므로, 확실하게 이해해두는 것이 중요합니다.

클래스 (Class):

  1. 참조 타입 (Reference Type):

    • 클래스는 참조 타입으로, 인스턴스가 메모리에 저장된 주소를 참조합니다.
    • 같은 클래스의 여러 인스턴스가 동일한 데이터를 참조할 수 있습니다.
  2. 상속과 다형성 지원:

    • 클래스는 상속을 지원하며, 다른 클래스로부터 상속받아 새로운 클래스를 만들 수 있습니다.
    • 다형성을 활용하여 부모 클래스 타입으로 여러 자식 클래스 인스턴스를 다룰 수 있습니다.
  3. 초기화 가능한 속성 (Properties):

    • 클래스는 초기화 가능한 저장 프로퍼티와 연산 프로퍼티를 가질 수 있습니다.
  4. Deinitializer 지원:

    • 클래스는 인스턴스가 메모리에서 해제될 때 실행되는 deinitializer를 정의할 수 있습니다.
  5. 참조 카운트 (Reference Count):

    • ARC (Automatic Reference Counting)을 통해 메모리 관리를 합니다. 참조가 없을 때 메모리에서 해제됩니다.

구조체 (Struct):

  1. 값 타입 (Value Type):

    • 구조체는 값 타입으로, 인스턴스가 실제 데이터를 포함하고 복사됩니다.
    • 복사되기 때문에 독립적인 데이터를 가질 수 있습니다.
  2. 상속 불가능:

    • 구조체는 상속을 지원하지 않습니다. 즉, 다른 구조체로부터 상속받을 수 없습니다.
  3. 초기화 메서드:

    • 구조체는 생성자(Initializer)를 사용하여 초기화하며, 기본 멤버와 매개변수를 이용하여 초기화합니다.
  4. 멤버와 이니셜라이저 자동 생성:

    • 구조체는 Swift에서 멤버변수와 이니셜라이저를 자동으로 생성해주므로 추가적인 작업이 필요 없습니다.
  5. 복사와 참조 카운트:

    • 구조체는 값이 복사되기 때문에 참조 카운트 개념이 없습니다. 즉, 할당된 메모리는 스코프를 벗어나면 자동으로 해제됩니다.

어떤 것을 선택해야 할지는 프로젝트의 목적과 데이터 모델의 특성에 따라 다를 수 있습니다. 클래스는 주로 복잡한 객체 관계와 상속 계층을 다룰 때 유용하며, 구조체는 간단한 데이터 구조나 값들을 그룹화할 때 효과적입니다. 값의 복사와 참조, 상속 등을 고려하여 상황에 맞게 클래스와 구조체를 선택하실 수 있습니다.

post-custom-banner

0개의 댓글