1. 클래스와 구조체 개요
1.1 구조체
- 구조체는 인스턴스를 생성한 후 이를 변수나 상수에 할당하거나 함수의 인자값으로 전달할 때 값을 복사하여 전달하는 방식을 사용한다. 이를 (Value Type) 또는 복사에 의한 전달 이라고 한다.
- Call By Value (구조체 전달, 파라미터 전달시 값 자체가 복사되어 전달된다.)
- stack memory 영역에 할당
- 상속 불가능
- NSData 로 serialize 불가능
- Codable 프로토콜을 이용해 JSON ↔ Struct 간에 변환이 가능하다.
- 항상 새로운 변수로 copy가 일어나기 때문에 muti-thread 환경에서 공유변수로 인해 문제를 일으킬 확률이 적다.
1.2 클래스
- 메모리 주소 참조에 의한 전달방식을 사용한다. 이를 참조 타입(Reference Type) 이라고 한다.
- Call By Reference (클래스 전달, 또는 파라미터 전달시에 그 자체를 가리키고 있는 메모리 주소값이 넘겨진다)
- heap memory 영역에 할당된다
- 상속 가능