새로운 데이터 타입을 저으이하고, 기능을 추가한다.
구조체: struct - 값 타입
스위프트의 기본 데이터 타입은 모두 구조체(String, Bool, Int, ...)
클래스: class - 참조 타입
class Person {
var heihgt: Float = 0.0
var weight: Float = 0.0
init() {
self.heihgt = 100.0
self.weight = 20.0
}
init(_ h: Float, _ w: Float) {
self.heihgt = h
self.weight = w
}
deinit {
print("Person의 인스턴스가 소멸됩니다.")
}
}
구조체 VS 클래스
둘다: 값 저장 위한 프로퍼티 정의 가능 / 기능 실행을 위해 메소드 정의 가능 / 서브스크립트문법을 통해 구조체 or 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있음 / 초기화될 때의 상태를 지정하기 위해 이니셜라이저 정의 / 초기구현과 더불어 새로운 기능 추가를 위해 익스텐션 확장 가능 / 특정 기능을 실행하기 위해 특정 프로토콜 준수 가능
only 클래스: 구조체는 상속 X / 타입캐스팅은 클래스의 인스턴스에만 허용 / deinitalizer 는 클래스의 인스턴스에만 활용 / 참조 횐수 계산(reference counting) 은 클래스의 인스턴스에만 적용
반응형
'Language > Swift' 카테고리의 다른 글
[Optional] (0) | 2021.05.12 |
---|---|
[Optional] (0) | 2021.05.10 |
[2_객체지향 프로그래밍과 스위프트] Chapter10. property, method (0) | 2021.03.11 |
[1_스위프트 기초] Chpater8. Optional (0) | 2021.03.11 |
[1_스위프트 기초] Chaptrer 1. Swift (0) | 2021.03.11 |