728x90
Struct
구조체의 인스턴스는 값 타입 --> 전달될 값이 복사되어 전달된다.
스위프트 기본 타입(Bool, Int, Array, Dictionary, Set, String 등) 구조체로 구현되어 있음
Class
클래스의 인스턴스는 참조 타입 --> 전달될 값이 복사되지 않고 참조(주소)가 전달된다.
*같은 곳을 참조하는지 확인을 위해 === 를 사용한다.
공통점
- 값을 저장하기 위해 property 를 정의 가능
- 기능 실행을 위해 method 정의 가능
- subscript 문법을 통해 구조체 또는 클래스가 갖는 값에 접근하도록 서브스크립트를 정의 가능
- 초기화 될 때 상태를 지정하기 위한 init 정의 가능
- 기능 추가를 위한 extension 가능
- 특정 기능 실행을 위한 프로토콜 준수 가능
차이점
- 구조체는 상속 불가능
- 타입 캐스팅은 클래스 인스턴스만 가능
- deinit은 클래스 인스턴스만 가능
- 참조 횟수 계산 (Reference Counting)은 클래스 인스턴스만 가능
구조체 사용이 권장되는 조건
- 연관된 간단한 값의 집합을 캡슐화 하는 것만이 목적일 때
- 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
- 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
- 다른 타입으로부터 상속받거나 자신을 상속할 필요가 없을 때
클래스 사용이 권장되는 조건
- 구조체 조건이 아닌 모두
*Subscript
*ARC(Reference Counting)
728x90
'Swift' 카테고리의 다른 글
ARC - Automatic Reference Counting (0) | 2020.08.24 |
---|---|
Swift: 프로퍼티와 메서드 (0) | 2020.07.13 |
Swift enum - 열거형 (0) | 2020.07.09 |
Swift Set (0) | 2020.07.09 |
Swift 알고리즘에 쓰이는 문법 정리 (0) | 2020.07.07 |
댓글