✏️ 구조체와 클래스
Swift에서 구조체와 클래스를 공부하면서 잘 알아야 할 것은 구조체와 클래스 모두 하나의 타입에 속한다는 것이다. 둘 다 똑같이 커스텀 타입인데 뭐가 다른지를 잘 알고 필요에 맞게 사용하면 될 것 같다.
✏️ 구조체와 클래스의 차이
우선 아래의 내용을 잘 아는게 중요할 것 같다.
- 구조체는 값 타입(Value type), 클래스는 참조 타입(Reference type)이다.
- 클래스는 상속이 가능하고, 구조체는 상속이 불가능하다
- 클래스는 default initializer를 생성해주지 않는다. 반면 구조체는 Swift가 memberwise initializer도 지원해준다.
✏️ 값 타입 vs 참조 타입
- 값 타입(Value type)
- 변수를 할당하면 스택 영역에 값이 저장된다.
- 변수를 복사한 후 복사본을 변경한다 하더라도, 원본의 데이터에 영향을 주지 않는다.( 복사할 때 새로운 인스턴스를 만든다는 것이겠지?)
- 레퍼런스 카운팅이 필요하지 않다.(이 말은 나중에 다시 공부하자, ARC..?)
- 참조 타입(Reference type)
- 스택 영역에는 변수의 레퍼런스(주소)만 할당되고, 실제 데이터는 힙 영역에 할당된다.
- 변수를 복사한다 해도 원본과 복사된 변수 모두 같은 힙 영역의 데이터를 가리키고있다. 그렇기 때문에 복사본을 바꾸면 원본도 변한다.
→ 이 부분이 가장 와닿는다. 공통되게 이용해야할 때 클래스와 구조체 중 클래스를 사용하면 될 것 같다.
- 변수를 복사할 때 레퍼런스 카운트만 +1된다. 실제로 값이 복사되진 않는다. (이 내용 또한 ARC...?)
'공부 > [iOS&Swift]' 카테고리의 다른 글
[Swift] Swift의 상속에 대하여 (0) | 2022.01.14 |
---|---|
[Swift] 접근제어(Access Control)에 대하여 (0) | 2022.01.13 |
[iOS] - Catalog asset(카탈로그 에셋)이란? (0) | 2022.01.12 |
[Swift] 스위프트의 클로저(Closure)에 대하여! (0) | 2022.01.11 |
[Swift] 연산자 / 조건문 / 반복문 을 간단히 알아보자! (0) | 2022.01.11 |
댓글