Programming/Swift(iOS)
Swift Property - 3
홍열
2021. 4. 1. 23:42
728x90
프로퍼티에는 감시자라는게 있습니다.
값이 변경될 때, 특정 행동들을 수행하도록 만들 수 있습니다.
저장 프로퍼티에 한해서만 사용을 할 수 있고, willSet / didSet이 있습니다.
- willSet
값이 변경되지 직전에 호출
속성이 변경될 것이라는 것을 외부에 알릴때 많이 사용
-didSet
값 변경 후에 호출 된다.
값의 변경 이후에 추가적으로 수행해야되는 작업이 있을 경우
이와는 별도로 defer block도 있습니다.
함수가 끝나고 난 이후에 무조건 실행되는 block입니다...
struct User {
var email:String {
didSet {
//만약 emil의 주소가 올바른지 체크하고 싶다..
//예를 들어 이메일의 입력이 ". hello@gmail.com "이다..
//공백 제거하는 방법을 email에 값이 변경된 후에 다시 한번 처리하는 것이다.
//email = email.lowercased().trimmingCharacters(in:.whitespaces)
print("didSet \(oldValue)")
}
willSet {
print("willSet \(newValue)")
isChanged = true
}
}
var isChanged:Bool = false
init(email:String) {
print("init begin")
self.email = email
//defer: 함수가 종료된 이후에 호출되는 블록을 지정합니다. 함수의 마지막에 수행되어야하는 정리코드를 캠슐화하는 목적으로 사용한다.
//swift의 공식 솔루션은 아니다. 하지만 많은 개발자들이 많이 사용하는 방법은 defer이다.
defer {
print("defer")
}
print("init end")
}
}