구조체와 클래스는 어떤 차이가 있으며 어떻게 선택해야 할까?
구조체 인스턴스의 타입은 값 타입(value type)
클래스 인스턴스의 타입은 참조 타입(reference type)이다.
구조체 인스턴스를 복사하거나 전달할 때 복사본이 생성되면서 별개의 데이터를 가지게 된다.
값을 수정해도 복사본이 수정되므로 원본엔 영향을 끼치지 않는다.
클래스 인스턴스는 복사하거나 전달할 때 참조체가 만들어지거나 전달된다. 값을 수정하면 원본에도 영향을 끼친다.
기본적으로 구조체를 사용합니다.
Objective-C 상호 운용성이 필요한 경우 클래스를 사용하십시오.
모델링하는 데이터의 ID를 제어해야 하는 경우 클래스를 사용하세요.
프로토콜과 함께 구조체를 사용하여 구현을 공유함으로써 동작을 채택합니다.
공식문서에 따르면 위의 기준으로 선택하면 된다.
나는 참조 타입과 값 타입을 기준으로 선택하는것이 맞다고 생각한다.
Swift Docs - Class And Structures
Swift Docs - Choosing Between Structrues and Classes