- 값을 저장하는 프로퍼티 정의
- 기능 제공을 위한 메서드 정의
- 서브 스크립트 구문을 사용하여 값에 접근을 제공하는 서브 스크립트 정의
- 초기화 상태를 설정하기 위한 초기화 정의
- 기본 구현을 넘어 기능적 확장을 위한 확장
- 특정 종류의 표준 기능을 제공하는 프로토콜 준수
- 상속을 사용하면 한 클래스가 다른 클래스의 특성을 상속할 수 있습니다.
- 타입 캐스팅을 사용하면 런타임에 클래스 인스턴스의 타입을 확인하고 해석할 수 있습니다.
- 초기화 해제 구문 (Deinitalizers) 을 사용하면 클래스의 인스턴스가 할당된 리소스를 해제할 수 있도록 합니다.
- 참조 카운팅은 하나 이상의 클래스 인스턴스 참조를 허락합니다.
클래스는 참조 타입이기 때문에 클래스의 같은 단일 인스턴스에 참조하는 여러개의 상수와 변수가 가능합니다 (구조체와 열거형은 상수 또는 변수 또는 함수에 전달할 때 항상 복사되기 때문에 클래스와 같지 않습니다).
2개의 상수 또는 변수가 클래스의 같은 인스턴스를 참조하는지 확인하는 것이 유용할 수 있습니다. 이를 위해 Swift는 2가지 식별 연산자를 제공합니다:
동일 인스턴스 (Identical to) (===)
동일하지 않은 인스턴스 (Not identical to) (!==)
이 연산자를 사용하여 2개의 상수 또는 변수가 하나의 동일한 인스턴스를 참조하는지 확인할 수 있습니다
if tenEighty === alsoTenEighty {
print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
}
// Prints "tenEighty and alsoTenEighty refer to the saame VideoMode instance."
값 타입 (value type) 은 변수 또는 상수에 할당될 때나 함수에 전달될 때 복사 되는 값인 타입입니다.
Swift에서 모든 구조체와 열거형은 값 타입입니다. 이것은 생성한 구조체와 열거형 인스턴스와 프로퍼티로 포함된 모든 값 타입은 코드에서 전달될 때 복사된다는 의미
내 생각으로 결국 class와 struct의 차이를 이해하고, 그 과정에서 call of reference, call of value를 이해하면 될 것 같다