iOS :: Swift 메모리의 Stack과 Heap 영역 톺아보기
Class
- Swift에서는 객체라는 용어 대신 인스턴스 라는 용어를 사용함
- 단일 상속만 가능
- (인스턴스/타입) 메서드 or 프로퍼티
- 참조 타입
- 데이터를 전달할 때 값의 원본 메모리 주소를 전달
- 주소를 복사하여 이미 존재하는 인스턴스의 위치를 가리킴. 참조하는 값이 존재하는 위치를 stack 메모리 영역에, 참조되는 값은 heap 메모리 영역에 저장 됨
- iOS 프레임 워크의 대부분이 클래스로 구성되어 있음
Struct
- 상속 불가
- 인스턴스/타입) 메서드 or 프로퍼티
- 값 타입
- 데이터를 전달할 때 값을 복사하여 전달
- 값이 복사되어 새로운 인스턴스가 생성되고 이 인스턴스가 stack 메모리 영역에 저장됨
- Swift의 대부분의 큰 뼈대는 모든 구조체로 구성되어 있다?
- 참조가 아닌 복사가 필요할 때 or 자신을 상속할 필요가 없거나 상속받을 필요가 없을 때
Enum
- 다른 언어의 열거형과는 많이 다른 존재?
- 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의한 것
- 열거형 자체가 하나의 데이터 타입