일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- web
- 파일 시스템
- 큐
- LoB
- 정렬 알고리즘
- OSI
- 암호수학
- SWiFT
- 백준
- ftz level13
- Java
- 스택
- PHP
- windosw 문자열
- System
- 미로 탐색 알고리즘
- windosws wbcs
- 자료구조
- Stack
- 재귀
- ftz
- HTML
- War Game
- C
- level13
- 파이썬
- pwnable.kr
- c언어
- 두근두근 자료구조
- 시간복잡도
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 타입 프로퍼티 본문
반응형
스위프트 프로그래밍 3판 - 야곰 지음
연산 프로퍼티와 저장 프로퍼티는 모두 타입을 정의하고 해당 타입의 인스턴스가 생성되었을 때 사용할 수 있는 인스턴스 프로퍼티입니다. 인스턴스 프로퍼티는 인스턴스를 새로 생성할 때마다 초깃값에 해당하는 값이 프로퍼티의 값이 되고, 인스턴스마다 다른 값을 지닐 수 있습니다.
각각의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티를 타입 프로퍼티라고 합니다. 타입 프로퍼티는 타입 자체에 영향을 미치는 프로퍼티입니다. 인스턴스의 생성 여부와 상관없이 타입 프로퍼티의 값은 하나며, 그 타입의 모든 인스턴스가 공통으로 사용하는 값(C언어의 static constant와 유사), 모든 인스턴스에서 공용으로 접근하고 값을 변경할 수 있는 변수(C 언어의 static 변수와 유사) 등을 정의할 때 유용합니다.
타입 프로퍼티는 두 가지인데 저장 타입 프로퍼티는 변수 또는 상수로 선언할 수 있으며, 연산 타입 프로퍼티는 변수로만 선언할 수 있습니다. 저장 타입 프로퍼티는 반드시 초깃값을 설정해야 하며 지연 연산됩니다. 지연 저장 프로퍼티와는 조금 다르게 다중 스레드 환경이라고 하더라도 단 한 번만 초기화된다는 보장을 받습니다. 지연 연산된다고 lazy 키워드를 표시해주지는 않습니다.
class AClass{
//저장 타입 프로퍼티
static var typeProperty: Int = 0
//저장 인스턴스 프로퍼티
var instanceProperty: Int = 0{
didSet{
Self.typeProperty = instanceProperty + 100
}
}
static var typeComputedProperty: Int{
get{
return typeProperty
}
set{
typeProperty = newValue
}
}
}
AClass.typeProperty = 123
let classInstance: AClass = AClass()
classInstance.instanceProperty = 100
print(AClass.typeProperty)
print(AClass.typeComputedProperty)
타입 프로퍼티는 인스턴스를 생성하지 않고도 사용할 수 있으며 타입에 해당하는 값입니다. 그래서 인스턴스에 접근할 필요 없이 타입 이름만으로도 프로퍼티를 사용할 수 있습니다.
반응형
'Programming > Swift' 카테고리의 다른 글
[Swift] 11.1 인스턴스 생성 / 이니셜라이저 / 옵셔널 프로퍼티 / 상수 프로퍼티 (0) | 2021.07.23 |
---|---|
[Swift] 10.2 메서드 / 인스턴스 메서드 / 타입 메서드 (0) | 2021.07.20 |
[Swift] 10.1.4 프로퍼티 감시자 (0) | 2021.07.19 |
[Swift] 10.1.3 연산 프로퍼티 / 접근자와 설정자 (0) | 2021.07.16 |
[Swift] 10.1.2 지연 저장 프로퍼티 (0) | 2021.07.16 |