Open ZZBAE opened 1 year ago
class는 참조타입이고 struct와 enum은 값타입 입니다. class는 참조타입이기 때문에 메모리 주소가 전달되고 heap영역에 저장이 됩니다. struct와 enum은 값타입이기 때문에 값의 복사가 이루어지고 stack영역에 저장이 됩니다.
상속의 가능여부도 가장 대표적인 차이점 입니다. 클래스만 상속이 가능합니다.
메모리에서 해제 되는 과정에서도 차이를 보입니다. Class는 ARC를 통해 참조 카운트가 0이 되었을때 힙영역에서 메모리 해제 되며 이때 순환참조에 의한 메모리누수에 유의를 해야합니다. 나머지 두개의 타입은 스택영역에서 자동으로 해제됩니다.
개인적으로는 상속과 값을 공유해야하는 참조가 필요한 것이 아니라면 기본적으로 구조체를 사용하며, enum은 연관된 값들의 모임을 만들 때 주로 사용합니다.
구조체
열거형
클래스