Struct
- 구조체는 값 타입이며 새로 할당 될때마다 서로 독립적인 개체를 띄고 있다.
- 구조체는 상속이 불가능 하다.
Class
- 클래스는 참조 타입이며 변수나, 상수, 함수에 전달 될때 값이 복사 되지 않는다.
- ARC를 통해 메모리를 관리 한다.
- 상속이 가능하다.
- 타입 캐스팅을 통해 인스턴스의 타입을 확인 할 수 있다.
- deinit를 통해 클래스 인스턴스의 메모리를 해체 할 수 있다.
Enum
- 열거형은 값 타입이다.
- 열겨형은 상속이 불가능 하다.
Struct, Class, Enum 차이점
Stuct, Class, Enum은 유사한 기능을 제공하지만 가장 큰 차이점은 값 타입과 참조 타입 이라는 Semantics
가 큰 차이점이라 생각합니다.
값 타입 같은 경우 참조 타입과 다르게 Stack 영역에 저장이 되며 속도 측면 이 월등히 빠르며 서로 독립적인 개체를 띄고 있습니다. 반면에 참조 타입 같은 경우 Heap 영역에 저장되며 구조체 보다 더 복잡한 구조를 가지고 있으며, Heap allocation
을 사용하여 구조체 보다 더 많은 비용이 필요 합니다.
📝 참고 사이트