728x90
반응형
야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다.
구조체와 클래스의 차이
같은점
- 값을 저장하기 위해 프로퍼티를 정의할 수 있다
- 기능 실행을 위해 메서드를 정의할 수 있다
- 서브스크립트 문법을 통해 구조체 또는 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있다
- 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다
- 초기구현과 더불어 새로운 기능 추가를 위해 익스텐션을 통해 확장할 수 있다
- 특정 기능을 실행하기 위해 특정 프로토콜을 준수할 수 있다
다른점
- 구조체는 상속할 수 없다
- 타입캐스팅은 클래스의 인스턴스에만 허용된다
- 디이셜라이저는 클래스의 인스턴스에만 활용할 수 있다
- 참조 횟수 계산(RC)은 클래스의 인스턴스에만 적용된다
값 타입과 참조 타입
- 구조체는 값 타입이고 클래스는 참조 타입이다. 두 개의 가장 큰 차이는 '무엇이 전달되느냐'
- 값 타입 : 전달될 값이 복사
- 참조 타입 : 참조(주소)가 전달
- 스위프트의 기본 데이터 타입은 모두 구조체
구조체와 클래스 선택해서 사용하기
아래 조건 중 하나 이상에 해당된다면 구조체 사용 권장
- 연관된 간단한 값의 집합을 캡슐화하는 것만이 목적일 때
- 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
- 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
- 다른 타입으로부터 상속받거나 자신을 상속할 필요가 없을 때
반응형
'Programming > Swift' 카테고리의 다른 글
[Swift] 문법 다시보기 - 메서드 (0) | 2021.10.13 |
---|---|
[Swift] 문법 다시보기 - 프로퍼티 (0) | 2021.10.12 |
[Swift] 문법 다시보기 - 옵셔널, 클래스 (0) | 2021.10.11 |
[Swift] 문법 다시보기 - 함수 (0) | 2021.10.11 |
[Swift] 문법 다시보기 - Switch (0) | 2021.10.10 |