[Swift] Struct VS Class
👨🏻‍💻iOS 공부/iOS & Swift

[Swift] Struct VS Class

728x90
반응형
  Struct Class
type Value type
(= call-by-value)
Reference type
(= call-by-reference)
메모리 할당 공간 Stack Heap
상속 X O
deinit X O

 

Struct

  • enum과 같이 값 타입이다. (값의 복사가 일어난다) 
  • struct는 stack 메모리 공간에 할당된다
    • stack 메모리 공간은 "컴파일" 시점에 결정된다. 
    • Thread-safe
  • 상속 불가
  • 기본적으로는 reference count로 메모리를 관리하지 않으나, 참조를 포함하는 경우에는 reference count를 사용한다

Class

  • 참조 타입이다. 
  • class는 heap 메모리 공간에 할당된다. 
    • heap 메모리 공간은 "런타임" 시점에 결정된다.
    • Thread-unsafe
  • ARC로 메모리 관리 (Reference Count)
    • Reference count가 0이 되어야 사라짐
  • 타입 캐스팅을 통해 런타임에서 인스턴스의 타입을 확인할 수 있다 (as, as!, as?)
  • 상속 가능하다

728x90
반응형