Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Swift] 클래스와 구조체의 차이 #2

@seungchan2

Description

@seungchan2

클래스와 구조체

클래스

  • 참조 타입이다.
  • 클래스는 상속이 가능하다.
  • 클래스는 힙 영역에 저장하고 메모리 주소를 직접 전달한다.

구조체

  • 값타입이다.
  • 구조체는 상속이 불가능하다.
  • 구조체는 값을 스택에 저장해서 복사 전달한다.

메모리 관점에서의 클래스와 구조체의 차이

구조체

  • 필요시에 항상 메모리의 값이 복사되어 전달
  • Stack에 저장
  • 값이 들어있는 스택의 스코프가 종료되면 메모리에서 자동 제거�

클래스

  • 필요시에 항상 메모리의 주소를 전달
  • 값은 Heap에 저장, 주소를 Stack에 저장
  • Reference Count를 통해 메모리 관리 (Swift에서 사용하는 ARC모델)

그렇다면 언제 사용할까?

  • 클래스는 메모리에 오랫동안 저장, 관리가 된다. 반면 구조체는 메모리에 오랫동안 저장되지 않는다.
  • 따라서 상속해서 사용한다면 클래스가 더 적합하고 연관된 데이터들을 캡슐화 할 때 구조체가 더 적합하다.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions