새소식

iOS/CS

[Swift] Struct VS Class

  • -

[주제]

Struct 와 Class 중에 누가 더 빠른가? 혹은 나머지 특징에 대한 각각의 장점과 단점에 대해 알아보자.

[내용]

  Struct Class
속도 빠름(stack memory) 느림(heap memory)
인자 전달하는 방식 call by value call by reference
메모리 저장 방식 stack memory heap memory
상속 유무 상속 불가능 상속 가능

우선 짚고 넘어가야 할 점은 위의 표를 보면 알 수 있겠지만 Struct와 Class는 언제나 어느 한 쪽의 사용이 권장되는 방식이 아닌 각각의 장단점을 갖고 있다는 점이다.

 

<속도>

Struct를 사용한다면 프로그램의 stack memory에 저장이 되기 때문에 heap memory에 저장되는 class보다 더 빠를 수가 있다.

스택과 힙 메모리의 차이점에 대해서 이 참에 한번 짚어보고 가도록 하자.

  스택
메모리 이동 방식 메모리의 높은 주소에서 낮은 주소 메모리의 낮은 주소에서 높은 주소
유연성 resize 불가능 resize 가능
할당 / 해제 빠름 느림
범위 지역(local) 전역(global)

스택 메모리의 경우에는 함수의 호출과 관계되어 있으며 stack 방식으로 이루어져서 LIFO 의 방식으로 동작을 한다.

반면에 heap 메모리는 프로그래머가 관리할 수 있으며 관리해야 하는 메모리이다.

 

stack 메모리는 용량이 heap 메모리보다 적다는 특징이 있다는 것까지는 기억해두자.

 

<인자 전달하는 방식>

스택은 call by value 즉, 약한 참조를 일으키고 class 는 call by reference로 강한 참조이다.

즉, struct를 호출할때 우리들이 해당 인스턴스의 내용을 바꾸더라도 원본 struct는 그대로를 유지하고 class의 경우에는 우리가 해당 내용을 바꾸는 경우에 원본 class또한 바뀐다는 특징을 가지고 있다.

 

<상속 유무>

struct의 경우에는 상속이 불가능하고 class의 경우에는 상속이 가능하다.

고로 만일 우리가 A라는 struct의 내용을 B라는 struct에 상속시키고 싶다면 따로 struct 인스턴스를 호출해서 해당 내용을 B에 넣는식으로 구현을 해야 한다.

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.