Property Observer
ํ๋กํผํฐ ๊ฐ์ ๋ณํ๋ฅผ ๊ด์ฐฐํ๊ณ , ์ ์ฅ ํ๋กํผํฐ์ ์ถ๊ฐํ ์ ์๋ค.
willSet, didSet์ผ๋ก ํ๋กํผํฐ์ ๊ฐ ๋ณํํ ๋ ํธ์ถ๋จ -> ๊ฐ์ ๋ณํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค.
๐ ์, ์ธ์ ์ฌ์ฉํ๋์ง ?
์ฃผ๋ก iOS๊ฐ๋ฐ์์ UI๋ฅผ ์ ๋ฐ์ดํธ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
willSet
๊ฐ์ด ์ ์ฅ๋๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค.
willSet์ ํ๋ผ๋ฏธํฐ๋ ๋ฐ๋๊ฒ ๋ ๋ณ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
var fruit : String = "apple" {
willSet(newFruit){
print("๊ณผ์ผ์ด \(fruit)์์ \(newFruit)์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.")
}
}
ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ newValue๋ก ์๋ ์ง์ ๋ฉ๋๋ค.
var fruit : String = "apple" {
willSet{
print("๊ณผ์ผ์ด \(fruit)์์ \(newValue)์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.")
}
}
print(fruit)
fruit = "banana"
print(fruit)
์์ ๊ฐ์ด ์ ์ธํ ํ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
didSet
์ ๊ฐ์ด ์ ์ฅ๋ ์งํ์ ํธ์ถ๋ฉ๋๋ค.
didSet๋ willSet๊ณผ ๋ฐ๋๋ก ๋ฐ๋๊ธฐ ์ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค โ๏ธ
didSet์ ๋ณ์์ ์ ๊ฐ์ด ์ ์๋ ์ง ํ์ด๊ธฐ ๋๋ฌธ์ fruit์๋ ์ด๋ฏธ ์๋ก์ด ๊ฐ์ด ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
var fruit : String = "apple" {
didSet(oldFruit){
print("๊ณผ์ผ์ด \(oldFruit)์์ \(fruit)์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.")
}
}
ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ oldValue๋ก ์๋ ์ง์ ๋ฉ๋๋ค.
var fruit : String = "apple" {
didSet{
print("๊ณผ์ผ์ด \(oldValue)์์ \(fruit)์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.")
}
}
print(fruit)
fruit = "banana"
print(fruit)
์คํ๊ฒฐ๊ณผ
willSet & didSet ํจ๊ป์ฐ๊ธฐ
์๋ง๋ willSet๊ณผ didSet์ ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋จ ๋ฒ์ ์ํ ! ํ๋ ๊ฒ์ ์ด๋ ค์ธ ๊ฒ์ด๋ค.
var fruit : String = "apple" {
willSet{
print("๊ณผ์ผ์ด \(fruit)์์ \(newValue)์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.")
}
didSet{
print("๊ณผ์ผ์ด \(oldValue)์์ \(fruit)์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.")
}
}
print(fruit)
fruit = "banana"
print(fruit)
willSet๊ณผ didSet์ ํจ๊ป ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ง์ฃผํ ๊ฒ์ด๋ค.
๋ก์ง์ ๋ค์๊ณผ ๊ฐ๋ค. ์ ์ดํดํด๋ณด์..!
'๐ Programming > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] .\self ? ํค๊ฒฝ๋ก ํบ์๋ณด๊ธฐ (KeyPath) (1) | 2022.09.18 |
---|---|
[Swift] ์ต์ ๋ ์ฒด์ด๋ (0) | 2022.02.17 |
[Swift] class ์์(Inheritance) (0) | 2022.02.03 |
[Swift] property(ํ๋กํผํฐ) (0) | 2022.01.24 |
[Swift] ํด๋ก์ (Closure)์ ๋ชจ๋ ๊ฒ (0) | 2022.01.21 |