struct와 class와 enum의 차이를 설명하시오.

이하연·2021년 8월 15일
1

[Swift] 스위프트

목록 보기
4/27

Class

swift에서는 객체라는 용어 대신에 '인스턴스'라는 용어 사용

단일 상속만

(인스턴스/타입) 메서드 or 프로퍼티

참조타입

데이터를 전달할 때 값의 메모리 위치를 전달

주소를 복사하여 이미 존재하는 인스턴스의 위치를 가리킵니다. 참조하는 값이 존재하는 위치를 stack 메모리 영역에, 참조되는 값은 heap 메모리 영역에 저장됩니다.

ios 프레임워크의 대부분이 클래스로 구성되어 있다.


Struct

상속이 불가

(인스턴스/타입) 메서드 or 프로퍼티

값 타입

데이터를 전달할 때 값을 복사하여 전달

값이 복사되어 새로운 인스턴스가 생성되고 이 인스턴스가 stack 메모리 영역에 저장됩니다.

Swift의 대부분의 큰 뼈대는 모두 구조체로 구성되어있다.

언제 사용? 참조가 아닌 복사를 원할 때 or 자신을 상속할 필요가 없거나 상속받을 필요가 없을 때


Enum ( 이늄 )

Enumeration

다른 언어의 열거형과는 많이 다른 존재

유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의한 것

열거형 자체가 하나의 데이터 타입

상속이 불가

(인스턴스/타입) 메서드 or 연산 프로퍼티 지정

기존 프로퍼티는 값을 저장하는 역할을 하지만

연산 프로퍼티는 특정한 연산을 통해 값을 리턴해주는 것을 의미합니다.

값 타입


차이

클래스는 참조 타입이지만, 열거형과 구조체는 값 타입이다.

클래스는 상속이 가능하지만 열거형과 구조체는 상속이 불가능합니다.

공통점

이 세가지 모두 확장(extension)이 가능합니다.

0개의 댓글