Swift의 클래스와 구조체

2751 단어
클래스와 구조체는 다음과 같은 특성을 정의하는 범용 템플릿입니다.
  • 부동산
  • 방법/기능
  • 이니셜라이저
  • 프로토콜
  • 연장선

  • 클래스와 구조체는 정의에 사용되는 키워드를 제외하면 비슷해 보입니다.
    예:

    struct A{
    var name = "Ajith"
    var age = 10
    var run(){...}
    }
    



    class B {
    var name = "Ajith"
    var age = 10
    var run(){...}
    }
    


    둘의 공통점은?


  • 둘 다 속성, 메서드, 이니셜라이저, 프로토콜, 확장이 있음
  • 해당 값에 액세스하기 위한 첨자를 제공합니다
  • .
  • 실패 가능한 초기화를 둘 다에서 사용할 수 있음
  • 둘 다의 속성 및 메서드는 .(점) 구문을 사용하여 액세스합니다.

  • 수업에서만 사용할 수 있는 것:


  • deinit는 클래스에만 사용할 수 있습니다.
  • 클래스는 다른 클래스의 특성을 상속할 수 있습니다. 구조체는 다른 구조체에서 상속할 수 없습니다.
  • 참조 카운트에서는 둘 이상의 참조를 허용합니다.
  • 런타임 시 클래스 인스턴스 유형을 확인할 수 있습니다.

  • 구조체에서만 사용할 수 있는 것:


  • 구조체에 기본 멤버별 이니셜라이저가 있습니다. 클래스의 경우 명시적으로 정의해야 합니다.
  • Struct에는 변경하기 어려운 많은 버그가 발생할 수 있는 값을 변경할 수 있는 변경 사항이 없다는 변경 안전의 이점이 있습니다.

  • 구조체와 클래스의 차이점:


  • Class는 키워드 "class"를 사용하고 Struct는 키워드 "struct"를 사용합니다.
  • 함수에서 struct의 self 속성을 수정하려면 함수 시작 부분에서 변경을 정의해야 합니다. 수업은 아무것도 필요하지 않습니다.
  • 가장 큰 차이점 중 하나는 값과 참조 유형입니다.
  • let 속성을 사용하여 구조체 인스턴스를 만드는 경우 해당 속성을 수정할 수 없습니다. let 속성으로 클래스 인스턴스를 생성하면 해당 속성을 수정할 수 있습니다.

  • 값 대 참조 유형:


  • 클래스는 참조 유형입니다. 즉, 클래스 인스턴스가 저장된 메모리의 위치에 대한 참조를 의미합니다.
  • 구조체와 열거형은 값 유형입니다. 즉, 각 참조에 고유한 데이터 복사본이 있음을 의미합니다
  • .
  • 클래스의 인스턴스를 다른 참조에 공유/할당하는 경우 이러한 모든 참조에는 단일 공유 데이터가 있습니다. 즉, 해당 클래스 인스턴스의 모든 변경 사항을 모든 참조에서 사용할 수 있음을 의미합니다
  • .
  • 구조체의 인스턴스를 다른 참조에 공유/할당하면 모든 참조가 자체 메모리를 만들어 데이터를 저장합니다. 한 참조에서 구조체를 변경해도 다른 참조에는 영향을 주지 않습니다.
  • 클래스와 구조체 모두에 대한 메모리 할당이 다릅니다. 이러한 차이 때문에 클래스와 구조체는 인스턴스를 공유하는 동안 다르게 동작합니다.

  • Value types are stored in stack memory and reference type are stored in heap memory.

    좋은 웹페이지 즐겨찾기