-
클래스와 구조체Swift/swift 문법 2023. 4. 22. 06:02
클래스 -> 틀
객체 -> 실제 데이터
(in swift) 클래스의 인스턴스 -> 객체
인스턴스 클래스 or 구조체를 통해서 메모리에 찍어낸 것
구조체가 클래스보다 가볍다. 대다수의 경우에는 구조체를 사용하고 상속과 같은 기능이 필요할 때는 클래스를 사용한다.
구조체
인스턴스의 데이터를 모두 스택에 저장한다.
스택: 함수가 실행될 때 사용됨
-> 함수의 실행에 따라 생기고 지워진다.
값 복사
클래스
참조형식(: 복사 시 하나의 데이터를 가리킨다)
인스턴스 데이터는 힙에 저장, 해당 힙을 가리키는 변수는 스택(메모리 주소값이 저장되어있음)에 저장
찍어낸 인스턴스를 쓰려면 이름이 필요한데 그 이름이 변수에 담겨 있고, 실제적으로 그 이름은 힙의 인스턴스를 가리키고 있는 것.
[예시]
var apple = Apple(a:3, leaves:5)
변수 인스턴스 (클래스)
스택 힙
클래스의 인스턴스가 저장될 때, 틀 원본 클래스 주소가 힙에 함께 담겨있다.
인스턴스 let 선언으로 생성시 클래스와 구조체의 차이
: 클래스는 프로퍼티 생성 선언(let,var)에 따라 변경가능하지만, 구조체는 변경 불가하다.
클래스 인스턴스 생성에서 let의 의미: 스택에서 클래스가 가리키고 있는 주소값이 변경될 수 없음을 의미
구조체 인스턴스 생성에서 let의 의미: 스택에서 생성된 인스턴스 자체를 의미
점문법/ 명시적 멤버 표현식의 의미
: 내부의 요소, 클래스, 구조체의 인스턴스의 멤버에 접근한다. 멤버는 속성, 메서드를 포함
'Swift > swift 문법' 카테고리의 다른 글
스위프트의 메모리 관리 모델 (0) 2023.04.24 프로토콜 (0) 2023.04.24 메모리 안전 (0) 2023.04.21 클로저 (1급 객체) (0) 2023.04.18 리턴형이 never 타입인 함수 (0) 2023.04.16