단순히 값을 저장하고 있는 프로퍼티 이다. 이 프로퍼티는 let키워드를 이용해서 상수 혹은 var키워드를 이용해서 변수로 선언해 사용할 수 있다.
구조체와 클래스에서만 사용 가능. 저장 프로퍼티는 사용 시점에 따라서 Lazy Stored Property(지연 저장 프로퍼티)라는 것도 있음.
struct Information {
var age: Int //저장 프로퍼티
var country: String //저장 프로퍼티
}
//구조체에는 기본적으로 저장프로퍼티 매개변수를 갖는 이니셜라이저가 있음
let PersonalInfo: Information = Information(age: 25, country: "한국")
클래스, 구조체, 열거형에서 사용된다. 저장 프로퍼티와 달리 저장 공간을 갖지 않고, 다른 "저장 프로퍼티"의 값을 읽어 연산을 실행하거나, 프로퍼티로 전달받은 값을 다른 프로퍼티에 저장한다. 때문에 항상 var로 선언되어야 한다.
var storedProperty = "hi" {
willSet {
print(newValue)
}
}
var anotherProperty = ""
var computerProperty: String{
get {
return storedProperty + "world"
}
set {
anotherProperty = newValue
print(newValue)
}
}
print(storedProperty)
print(computerProperty) // get 읽기
computerProperty = "abc" // set 쓰기
storedProperty = "world"
// hi
// hiworld
// abc
// world
프로퍼티 값의 변화를 관찰하는 것으로, "저장 프로퍼티"에 추가할 수 있다. 새 값의 속성이 현재 값과 동일하더라도 속성 값이 설정되면 호출된다.
var storedProperty = "hi" {
willSet {
print(newValue)
}
}
print(storedProperty) //hi