클래스와 구조체는 내부에 속성과 메서드를 정의하여 여러 기능을 수행하며, 일반적으로 프로그램의 코드를 조직화 하기 위해 사용한다. Swift는 다른 프로그래밍 언어와 다르게 Interface 파일과 Implementation 파일을 분리해서 만들 필요가 없다. Swift에서 단일 파일에 구조체 또는 클래스를 정의하면, 다른 코드에서 해당 클래스와 구조체를 사용할 수 있는 인터페이스를 생성해준다. 클래스와 구조체는 객체 지향 프로그래밍(OOP)를 위한 필수 요소로 여겨져 전통적으로 객체로 알려져 있다. 그러나 Swift의 클래스와 구조체는 다른 언어보다 기능면에서 훨씬 더 가깝고, 일반적으로 클래스와 구조체의 기능은 해당 클래스와 구조체의 인스턴스에 적용되는 기능을 의미한다.

공통점

Swift에서 클래스와 구조체는 많은 공통점이 있다. 클래스와 구조체에서 아래와 같은 기능을 수행할 수 있다.

차이점

클래스는 구조체에 없는 추가 기능이 있지만 클래스는 지원하는 기능이 많은 만큼 복잡성이 증가한다. 따라서 Swift의 일반적인 지침으로 구조체를 선호하고 필요할 때 클래스를 사용한다. Swift에서 프로그램을 개발할 때 구조체와 클래스 중 어떤 것을 선택해야 하는가 에 대한 공식 문서 Choosing Between Structures and Classes를 참고하자.

선언 문법

struct Resolution {
  var width = 0
  var height = 0
}

class VideoMode {
  var resolution = Resolution()
  var interlaced = false
  var frameRate = 0.0
  var name: String?}

클래스와 구조체는 비슷한 선언 문법을 가지고 있다. 이름 앞에 클래스는 class 키워드를, 구조체는 struct 키워드를 적어서 선언할 수 있다. Swift에서 클래스와 구조체의 이름은 IntString과 같이 UpperCamelCase에 따라서 지어야 한다.

인스턴스