240311
일단 observer 가 뭔지 검색해 봤다
observer : 관찰자, 감시자
고로 Property observer 는 프로퍼티 관찰자 라고 할 수 있겠다
Property 가 뭐냐고 묻는다면 간략하게는 클래스, 구조체에서 선언하는 상수/변수 를 프로퍼티 라고 한다
프로퍼티에 대한 자세한 내용은 Swift git book 자료를 첨부 한다
프로퍼티 관찰자 (Property observers)는 프로퍼티의 값이 변경되는지 관찰하고 응답한다.
프로퍼티에 관찰자를 정의하는 방법은
willSet 과 didSet 이 있는데
-
willSet 은 값이 저장되기 직전에 호출됩니다.
-
didSet 은 새로운 값이 저장되자마자 호출됩니다
영어 그대로 해석 하면 된다
(1) willSet(새로운 값 생성'될' 예정인 시점) --> (2) 새로운 값 --> (3) didSet (새로운 값 저장 '된' 시점)
이런 순서로 보면 된다. 영어 공부도 할 수 있는 개발,, 정말 조타
예제를 보자
var name: String = "Unknown" {
willSet {
print("현재 이름 = \(name), 바뀔 이름 = \(newValue)") // 현재 이름 = Unknown, 바뀔 이름 = Peter
}
didSet {
print("현재 이름 = \(name), 바뀌기 전 이름 = \(oldValue)") // 현재 이름 = Peter, 바뀌기 전 이름 = Unknown
}
}
name = "Peter"
항상 willSet 이 먼저 실행 된다.
당연함 시점이 가장 앞이니까
(1) willSet(새로운 값 생성'될' 예정인 시점) --> (2) 새로운 값 --> (3) didSet (새로운 값 저장 '된' 시점)
willSet , didSet 두가지다 적어야 한다면 둘의 순서를 바꾸어 적어도 상관 없지만, 그냥 내가 보기 편하게 나라면 willSet를 먼저 적을 것이다.
그래서 위 예제를 보면
(0) 현재 값[Unknown] -> (1) willSet --> (2) 새로운 값 [Peter]--> (3) didSet
그러므로 현재 name은 Unknown 앞으로 바뀔 이름은 Peter 가 되시겠다
그리고 didset 시점엔 이미 새로운 이름을 받아왔으니 현재 이름은 Peter, 바뀌기전 이름은 Unknown 이 된다
print 에 newValue 가 뭐냐고 묻는다면 기본 파라미터 명이다. 원하는 이름으로 바꿀 수도 있다
파라미터 명을 정하지 않았을 때는 newValue 가 뜨는데
이름을 지정하니 지정한 파라미터명인 newName 이 자동으로 뜨는걸 볼 수 있다
'iOS Swift > 문법' 카테고리의 다른 글
Swift Naming convention (0) | 2024.03.13 |
---|---|
Swift Variables and Constants (0) | 2024.03.13 |
[Swift] Initializer (0) | 2024.03.07 |
UITableViewDataSource, UITableViewDelegate (1) | 2024.02.28 |
[Swift] Array (0) | 2024.02.22 |
댓글