본문 바로가기
Swift

Swift: 구조체 vs 클래스

by HaningYa 2020. 7. 13.
728x90

Struct

구조체의 인스턴스는 값 타입 --> 전달될 값이 복사되어 전달된다.

스위프트 기본 타입(Bool, Int, Array, Dictionary, Set, String 등) 구조체로 구현되어 있음

Class

클래스의 인스턴스는 참조 타입 --> 전달될 값이 복사되지 않고 참조(주소)가 전달된다.

*같은 곳을 참조하는지 확인을 위해 === 를 사용한다.

공통점

  • 값을 저장하기 위해 property 를 정의 가능
  • 기능 실행을 위해 method 정의 가능
  • subscript 문법을 통해 구조체 또는 클래스가 갖는 값에 접근하도록 서브스크립트를 정의 가능
  • 초기화 될 때 상태를 지정하기 위한 init 정의 가능
  • 기능 추가를 위한 extension 가능
  • 특정 기능 실행을 위한 프로토콜 준수 가능

차이점

  • 구조체는 상속 불가능
  • 타입 캐스팅은 클래스 인스턴스만 가능
  • deinit은 클래스 인스턴스만 가능
  • 참조 횟수 계산 (Reference Counting)은 클래스 인스턴스만 가능

구조체 사용이 권장되는 조건

  • 연관된 간단한 값의 집합을 캡슐화 하는 것만이 목적일 때
  • 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
  • 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
  • 다른 타입으로부터 상속받거나 자신을 상속할 필요가 없을 때

클래스 사용이 권장되는 조건

  • 구조체 조건이 아닌 모두

 

*Subscript

 

오늘의 Swift 상식 (Subscript)

서브스크립트란?

medium.com

 *ARC(Reference Counting)

 

[Swift]Automatic Reference Counting 정리

자동 참조 계수(Automatic Reference Counting) Swift는 앱의 메모리 사용을 추적하고 관리하는 자동 참조 계수(ARC)를 사용. 대부분의 경우에 메모리 작업은 잘 작동하며, 메모리 관리를 생각할 필요 없다.

minsone.github.io

 

 

 

 

728x90

'Swift' 카테고리의 다른 글

ARC - Automatic Reference Counting  (0) 2020.08.24
Swift: 프로퍼티와 메서드  (0) 2020.07.13
Swift enum - 열거형  (0) 2020.07.09
Swift Set  (0) 2020.07.09
Swift 알고리즘에 쓰이는 문법 정리  (0) 2020.07.07

댓글