Class vs Struct/Enum
열거형과 구조체는 값 타입이며, 클래스는 참조 타입이라는 것이 가장 큰 차이입니다. 또한, 클래스는 상속이 가능하지만 구조체와 열거형은 상속이 불가능합니다.
struct ValueType { var property = 1 } class ReferenceType { var property = 1 } // 첫 번째 구조체 인스턴스 let firstStructInstance = ValueType() // 두 번째 구조체 인스턴스에 첫 번째 인스턴스 값 복사 var secondStructInstance = firstStructInstance // 두 번째 구조체 인스턴스 프로퍼티 값 수정 secondStructInstance.property = 2 // 두 번째 구조체 인스턴스는 첫 번째 구조체를 똑같이 복사한 // 별도의 인스턴스이기 때문에 // 두 번째 구조체 인스턴스의 프로퍼티 값을 변경해도 // 첫 번째 구조체 인스턴스의 프로퍼티 값에는 영향이 없음 print("first struct instance property : \(firstStructInstance.property)") // 1 print("second struct instance property : \(secondStructInstance.property)") // 2 // 클래스 인스턴스 생성 후 첫 번째 참조 생성 let firstClassReference = ReferenceType() // 두 번째 참조 변수에 첫 번째 참조 할당 let secondClassReference = firstClassReference secondClassReference.property = 2 // 두 번째 클래스 참조는 첫 번째 클래스 인스턴스를 참조하기 때문에 // 두 번째 참조를 통해 인스턴스의 프로퍼티 값을 변경하면 // 첫 번째 클래스 인스턴스의 프로퍼티 값을 변경하게 됨 print("first class reference property : \(firstClassReference.property)") // 2 print("second class reference property : \(secondClassReference.property)") // 2
관련문서
The Swift Programming Language - Enumerations
The Swift Programming Language - Classes and Structures
by yagom
facebook : http://www.facebook.com/yagomSoft
facebook group : https://www.facebook.com/groups/yagom/
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓ 블로거에게 공감은 큰 힘이 됩니다 ↓↓↓
'Swift > 기본문법' 카테고리의 다른 글
프로퍼티 - Property (2) | 2017.06.26 |
---|---|
클로저 - Closure (0) | 2017.06.22 |
열거형 - Enumerations (0) | 2017.06.15 |
클래스 (0) | 2017.06.12 |
구조체 (2) | 2017.06.08 |