728x90
반응형
[ 클래스 - Class ]
- 전통적인 OOP 관점에서의 클래스
- 단일상속
- (인스턴스 / 타입) 메서드
- (인스턴스 / 타입) 프로퍼티
- 참조 타입
- Apple 프레임워크의 대부분의 큰 뼈대는 모두 클래스로 구성되어 있다.
[ 구조체 - Struct ]
- C 언어 등의 구조체보다 다양한 기능
- 상속 불가
- (인스턴스 / 타입) 메서드
- (인스턴스 / 타입) 프로퍼티
- 값 타입
- Swift 대부분의 큰 뼈대는 모두 구조체로 구성되어 있다.
[ 열거형 - Enum ]
- 다른 언어의 열거형과는 많이 다름
- 상속 불가
- (인스턴스 / 타입) 메서드
- (인스턴스 / 타입) 프로퍼티
- 값 타입
- 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의한 타입 ex) 요일, 월 등
- 열거형 자체가 하나의 데이터 타입이고, 열거형의 case 하나하나 전부 하나의 유의미한 값으로 취급된다.
- 선언 키워드 - enum
- 클래스, 구조체, 열거형 비교
클래스 | 구조체 | 열거형 | |
타입 | 참조 타입 | 값 타입 | 값 타입 |
상속 | O | X | X |
익스텐션 | O | O | O |
구조체는 언제 사용할까?
- 참조가 아닌 복사를 원할 때 (다른 객체 또는 함수 등으로 전달될 때) --> 구조체는 값 타입이기 때문에
- 상속할 필요가 없거나, 상속받을 필요가 없을 때
- Apple 프레임워크에서 프로그래밍을 할 때는 주로 클래스를 많이 사용한다고 한다.
값 타입(Value) VS 참조 타입(Reference)
- 값 타입 : 데이터를 전달할 때 값을 복사하여 전달
- 참조 타입 : 데이터를 전달할 때 메모리 위치를 전달
구조체와 클래스를 값 타입과 참조 타입으로서 아래 예시처럼 비교 가능하다.
Int, Doouble, String, Dictionary, Array, Set 등 스위프트의 기본 타입들은 모두 구조체로 구현되어 있다.
스위프트 언어 자체는 구조체 사용을 클래스보다 선호한다.
하지만 Apple 프레임워크는 대부분 클래스를 사용한다.
때문에 Apple 프레임워크 사용 시에 구조체 / 클래스 중 어떤 것을 사용할지는 상황에 따라 우리가 알아서 선택해주도록 하자.
728x90
반응형
'Swift' 카테고리의 다른 글
[ Swift ] Swift 기초 문법9 - 프로퍼티 (0) | 2023.02.17 |
---|---|
[ Swift ] Swift 기초 문법8 - 클로저 (0) | 2023.01.30 |
[ Swift ] Swift 기초 문법6 - 열거형 (0) | 2023.01.30 |
[ Swift ] Swift 기초 문법5 - 구조체, 클래스 (0) | 2023.01.29 |
[ Swift ] Swift 기초 문법4 - 옵셔널 (0) | 2023.01.28 |