YagomCareerStarterCamp-6 / Interview-study-in-swift

1 stars 0 forks source link

[1주차] Q3_struct와 class와 enum의 차이를 설명하시오. #3

Open ZZBAE opened 1 year ago

Groot-94 commented 1 year ago

구조체

kiwi1023 commented 1 year ago

class는 참조타입이고 struct와 enum은 값타입 입니다. class는 참조타입이기 때문에 메모리 주소가 전달되고 heap영역에 저장이 됩니다. struct와 enum은 값타입이기 때문에 값의 복사가 이루어지고 stack영역에 저장이 됩니다.

상속의 가능여부도 가장 대표적인 차이점 입니다. 클래스만 상속이 가능합니다.

메모리에서 해제 되는 과정에서도 차이를 보입니다. Class는 ARC를 통해 참조 카운트가 0이 되었을때 힙영역에서 메모리 해제 되며 이때 순환참조에 의한 메모리누수에 유의를 해야합니다. 나머지 두개의 타입은 스택영역에서 자동으로 해제됩니다.

개인적으로는 상속과 값을 공유해야하는 참조가 필요한 것이 아니라면 기본적으로 구조체를 사용하며, enum은 연관된 값들의 모임을 만들 때 주로 사용합니다.

Judy-999 commented 1 year ago

값 타입 vs 참조 타입

참조 타입 - Class

값 타입 - Struct, Enum

seohyeon2 commented 1 year ago

답변


꼬리질문