Swift) Class와 Struct의 차이점에 대해 설명하시오.

Class와 Struct 차이점

Class

  • 참조 타입(Reference Type)
  • 상속 가능
  • heap memory 영역에 할당 (속도가 느림)
  • 런타임에 직접 alloc하며 reference counting을 통해 dealloc이 필요
  • memory fragmentation 등의 overhead가 존재
  • NSData serialize 가능
  • Codable 사용 불가능
  • 런타임에 타입 캐스팅을 통해서 클래스 인스턴스에 따라 여러 동작이 가능
  • deinitializer 존재

Struct / Enum

  • 값 타입(Value Type)
  • 상속 불가능 (protocol은 사용 가능)
  • stack memory 영역에 할당 (속도가 빠름)
  • scope based lifetime: 컴파일타임에 compiler가 언제 메모리를 할당/해제할지 정확히 알고있음
  • data locality: CPU 캐시 히트율이 높음
  • NSData로 serialize 불가능
  • Codable 프로토콜을 이용하여 손쉬운 JSON <-> struct 변환 가능 (Swift 4 이상)
  • 항상 새로운 변수로 copy가 일어나기 때문에 multi-thread 환경에서 공유변수로 인해 문제를 일으킬 확률이 적음
자세히 보기

Swift) Class란?

Class란?

  • 클래스는 참조(reference)타입이다.
  • 타입 이름은 대문자 카멜케이스를 사용하여 정의한다.
  • Swift의 클래스는 다중 상속이 되지 않는다.
자세히 보기