[객체지향]Swift에서 구조체(struct)와 클래스(class)의 차이

권승용·2022년 6월 28일
0

Swift 프로그래밍

목록 보기
3/7

메모리 저장 방식의 차이

클래스

  • 클래스는 그 인스턴스를 힙에 저장한다.

  • 클래스 초기화 시, 클래스는 인스턴스가 저장된 힙 데이터에 대한 메모리 주소를 변수에 저장한다.

구조체

  • 구조체는 그 인스턴스를 스택 프레임에 저장한다.

  • 구조체 초기화 시, 구조체는 인스턴스 자체를 변수에 저장한다.


복사할 때의 차이점

클래스

  • 클래스의 복사는 참조형식(Referency Type)이다.

  • 클래스의 복사가 이루어질 때에는 클래스의 인스턴스를 가리키는 메모리 주소가 복사되는 것이다.

  • 따라서 새로운 복사본이 생성되지 않는다.

구조체

  • 구조체의 복사는 값 형식(Value Type)이다.

  • 구조체의 복사가 이루어질 때에는 구조체 인스턴스 자체가 복사된다.

  • 따라서 새로운 복사본이 생겨난다.


let을 사용할 때의 차이점

클래스

  • 클래스를 선언하는 변수에 let을 사용하면 클래스의 인스턴스를 가리키는 주소값이 불변함을 뜻하기 때문에 해당 변수는 가장 처음 선언된 인스턴스의 메모리 주소만을 가리킬 수 있게 된다.

  • 그러나 가리키고 있는 인스턴스를 변경하지 못할 뿐, 인스턴스 내의 멤버들은 수정 가능하다.

구조체

  • 구조체를 선언하는 변수에 let을 사용하면 구조체 인스턴스 자체가 변경불가하게 된다.

  • 따라서 구조체 내의 변수들도 let 취급을 받게 되어 변경이 불가능해진다.

profile
ios 개발자 지망생 입니다!

0개의 댓글