Structure와 Class는 Application에서 데이터를 저장하고 모델링을 하기 위한 좋은 선택지이지만, Structure와 Class의 유사성으로 인해 개발자가 선택하는 데 어려움이 있다.
새로운 데이터 타입을 Application에 추가할 때, 아래의 옵션을 참고하면 Class와 Structure 선택에 있어 도움을 줄거라 생각한다.
Use structures by default.
Use classes when you need Objective-C interoperability.
Use classes when you need to control the identity of the data you’re modeling.
Use structures along with protocols to adopt behavior by sharing implementations.
공통적인 종류의 데이터를 나타낼 때는 Structure를 사용해라. Swift에서 Structure는 다른 언어와 다르게 Class에서 제한적인 기능을 포함하고 있다. Structure는 저장 프로퍼티, 연산 프로퍼티 그리고 메소드를 가지고 있다. 게다가, Structure는 기본적인 구현을 위해 Protocol을 채택할 수 있다. Swift의 number, strings, array와 같은 기본 Library와 Foundation은 structure를 기본적인 타입으로 사용하고 있다.
Structure를 사용하면 앱의 전체 상태를 고려할 필요 없이 코드의 일부에 대해 더 쉽게 추론할 수 있다. Structure는 Class와 달리 값 유형이므로 앱 흐름의 일부로 의도적으로 변경 사항을 전달하지 않는 한 구조체의 로컬 변경 사항은 앱의 나머지 부분에 표시되지 않는다. 따라서 코드 섹션을 살펴보면 해당 섹션의 인스턴스에 대한 변경이 접선적으로 관련된 함수 호출에서 보이지 않게 이루어지는 것이 아니라 명시적으로 이루어질 것이라는 확신을 가질 수 있다.
만약 데이터를 처리하는 데 있어 Objective-C API가 필요할 경우, 또는 Object-C Framework로 정의된 Class에 Data Model을 추가하는 경우, Class와 Class 상속을 사용해야 한다. 예를 들면, 많은 Object-C Framework는 Class로 구성되어 있다(UIkit 대부분..?)