Zerom's Tech Story
로그인
Zerom's Tech Story
로그인
[iOS] struct와 class의 주요 차이점은 무엇인가요?
Zerom
·
2024년 2월 8일
팔로우
0
iOS
swift
면접
0
iOS 질문 답변
목록 보기
8/9
답변
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
Zerom
꼼꼼한 iOS 개발자 / Apple Developer Academy @ POSTECH 2기 / 멋쟁이사자처럼 앱스쿨 1기
팔로우
이전 포스트
[iOS] Swift에서의 오류 처리(Error Handling) 방법과 모범 사례에 대해 설명해 주세요.
다음 포스트
[iOS] iOS의 운영체제, 스레드, 메모리 관리 (ARC, GCD 등)
0개의 댓글
댓글 작성