구조체와 클래스

seocho·2022년 8월 30일
0

iOS

목록 보기
7/24

공통점

  • 값을 저장하는 프로퍼티 정의
  • 기능 제공을 위한 메서드 정의
  • 서브 스크립트 구문을 사용하여 값에 접근을 제공하는 서브 스크립트 정의
  • 초기화 상태를 설정하기 위한 초기화 정의
  • 기본 구현을 넘어 기능적 확장을 위한 확장
  • 특정 종류의 표준 기능을 제공하는 프로토콜 준수

클래스 (참조 타입)

  • 상속을 사용하면 한 클래스가 다른 클래스의 특성을 상속할 수 있습니다.
  • 타입 캐스팅을 사용하면 런타임에 클래스 인스턴스의 타입을 확인하고 해석할 수 있습니다.
  • 초기화 해제 구문 (Deinitalizers) 을 사용하면 클래스의 인스턴스가 할당된 리소스를 해제할 수 있도록 합니다.
  • 참조 카운팅은 하나 이상의 클래스 인스턴스 참조를 허락합니다.

식별 연산자

클래스는 참조 타입이기 때문에 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능합니다 (구조체와 열거형은 상수 또는 변수 또는 함수에 전달할 때 항상 복사되기 때문에 클래스와 같지 않습니다).
2개의 상수 또는 변수가 클래스의 같은 인스턴스를 참조하는지 확인하는 것이 유용할 수 있습니다. 이를 위해 Swift는 2가지 식별 연산자를 제공합니다:
동일 인스턴스 (Identical to) (===)
동일하지 않은 인스턴스 (Not identical to) (!==)
이 연산자를 사용하여 2개의 상수 또는 변수가 하나의 동일한 인스턴스를 참조하는지 확인할 수 있습니다

if tenEighty === alsoTenEighty {
    print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
}
// Prints "tenEighty and alsoTenEighty refer to the saame VideoMode instance."

구조체, 열거형 (값 타입)

값 타입 (value type) 은 변수 또는 상수에 할당될 때나 함수에 전달될 때 복사 되는 값인 타입입니다.

Swift에서 모든 구조체와 열거형은 값 타입입니다. 이것은 생성한 구조체와 열거형 인스턴스와 프로퍼티로 포함된 모든 값 타입은 코드에서 전달될 때 복사된다는 의미

결론

내 생각으로 결국 class와 struct의 차이를 이해하고, 그 과정에서 call of reference, call of value를 이해하면 될 것 같다

profile
iOS 개린이

0개의 댓글