2022. 6. 2. 12:32ㆍswift
변수란?
- 어떠한 서랍장 속에 값을 저장하는것
1번서랍장에 1, 2번서랍장에 2 이런식으로 생각하면된다.
변수는 담을 수 있는 값의 종류가 다르고 그 값의 제한이 각각 다르게 되어 있다.
전역변수
- 어디에서든지 사용할 수 있는 변수
var a = "good" a = 전역 변수 함수 밖에 정의된 변수 를 전역변수라 한다.
지역변수
- 지역변수는 함수 내에서 특정 동작을 하고 그 값을 다른 곳으로 전달하거나 없어지는 경우 사용
var one = "good"
// 함수 밖에 있는 One 전역변수
func two() {
var one = "god" // one 함수내에 있는 변수 지역변수
print(one)
}
two() == 출력값 god
// 함수내에 지역변수가 없었더라면 전역 변수가 출력된다
포로퍼티옵저버
-특정 프로퍼티를 관찰하고 프로퍼티 값이 변경되면 반응한다.
프로퍼티 옵저버는 willSet 과 didSet 으로 나뉜다.
willSet - 프로퍼티의 값이 변경되기 직전에 호출되는 옵저버
-(값이 저장되기 직전 호출)
didSet - 프로퍼티의 값이 변경된 직후에 호출되는 옵저버
-(새로운 값이 저장된 직후 호출)
예시) 만보기 카운트
class stepCounter {
var totlaSteps: Int = 0 {
willSet(newTotalSteps) {
print("totalSteps을\(newTotalSteps)로 설정")
}
didSet(oldTotalSteps) {
if totlaSteps > oldTotalSteps {
print("\(totlaSteps - oldTotalSteps)걸음이 추가된다.")
}
}
}
}
//let stepCounter = stepCounter()
//stepCounter.totlaSteps = 200 값을 200으로 입력시
TotalSteps 200
oldTotalSteps 200 == (설정 하기전 값은 "0"이다 허나 didSet이 작동하여
TotalSteps 200 - o ldTotalSteps 0 을 뺀 200걸음이 추가 된다.
stepCounter.totlaSteps = 360 입력시
TotalSteps 360
oldTotalSteps 160 (설정하기 이전의 값이 저장되있다.
설정 전 값이 200이 였으니 이번 360을 줌으로써 360 -200 인 160이 출력된다.
그렇다 willSet, didSet 을 이렇게 쓴다
willSet 은 변경하면 그대로 출력 하지만
didSet 은 변경하기전 그값과 변경된 값을 계산한후에 출력 한다.
'swift' 카테고리의 다른 글
딕셔너리를 알아보자 (0) | 2022.06.06 |
---|---|
함수 (0) | 2022.06.02 |
옵셔널에 관하여 (0) | 2022.06.02 |
배열에 관하여 (0) | 2022.06.02 |
옵셔널 바인딩이란? (0) | 2022.05.09 |