[iOS] struct와 class의 주요 차이점은 무엇인가요?

Zerom·2024년 2월 8일
0

iOS 질문 답변

목록 보기
8/9
post-thumbnail

답변

  • Class는 참조타입으로 컴파일 단계에서 생성과 해제를 알 수 없어 Heap 영역에 할당이 되고, ARC로 메모리 관리를 합니다.
  • struct는 값타입으로 컴파일 단계에서 언제 생성되고 해제되는지 알 수 있어 Stack에 할당이 되고, Stack은 각 스레드마다 독립적인 공간을 가지고 있어 스레드로부터 안전합니다.

추가 질문

struct와 class는 어떤 상황에서 사용하는 것이 적절한가요?

  • 메모리의 스택은 크기가 크지 않기 때문에 단순한 데이터 값을 보유하거나, 작은 값을 갖는 데이터를 처리할 때 struct를 사용합니다.
  • 상속이 필요하거나 Objective-C와 상호 운용성을 원할 때 class를 사용합니다.

struct와 class 간의 성능 차이는 어떠한 원리로 발생하나요?

  • class는 참조타입이고 struct는 값타입입니다.
  • 참조타입은 컴파일 타임에 생성 및 해제를 파악할 수 없기 때문에 Heap 영역에 할당이 되고 Heap 영역은 스레드로 부터 안전하지 않기 때문에 이를 관리해주기 위한 lock과 같은 자원도 추가로 필요하게 되고 이는 곧 오버 헤드로 이어집니다.
  • 반대로 값타입은 컴파일 타임에 생성 및 해제를 파악할 수 있기 때문에 Stack 영역에 할당이 되고 Stack 영역은 각 스레드마다 독립적으로 생성되기 때문에 스레드로 부터 안전합니다.
  • 이러한 점 때문에 struct와 class 간의 성능 차이가 발생합니다.

참고 사이트 : https://icksw.tistory.com/256

profile
꼼꼼한 iOS 개발자 /
Apple Developer Academy @ POSTECH 2기 / 멋쟁이사자처럼 앱스쿨 1기

0개의 댓글