- 프로그램 코드의 구성 요소가 되는 범용의 유연한 구조
- 데이터를 용도에 맞게 묶어 표현하고자 할 때 유용한 기능
- ‘프로퍼티'와 ‘메서드'를 사용하여 구조화된 데이터와 기능을 가질 수 있고, 하나의 데이터 타입을 만드는 역할
구조체 (Struct)
struct
키워드로 선언
- 값 타입 (Value Type)으로, 스택에 데이터 저장
- 값타입을 전달할 때에는 메모리에 전달인자를 위한 인스턴스가 새로 생성 된다. 즉, 전달되는 값이 복사된다.
- Copy-On-Write (COW)
- 상속 불가능
클래스 (Class)
- class 키워드로 선언
- 참조 타입 (Reference Type)으로, 힙에 데이터를 저장하고 스택에서 힙의 주소를 가지고 있다.
- 참조 타입을 전달할 때는 인스턴스의 참조(주소)가 전달된다.
- 상속 가능
- ARC를 통해 메모리 관리
- 타입 캐스팅을 사용해 런타임 동안 클래스 인스턴스의 타입을 확인할 수 있고, 인스턴스의 타입을 슈퍼클래스 또는 서브클래스 타입처럼 다룰 수 있다.
- 디이니셜라이저(Deinitializer)를 사용하면, 클래스의 인스턴스에 할당된 리소스를 해제 가능
- RC를 통해 인스턴스에 대한 두 개 이상의 참조를 허용
공통점