ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toFrontend
์๋ฌธ ์ฝ๊ธฐ
Property Observers๋ฅผ ํตํ ์ํ ๋ณ๊ฒฝ ๋ก์ง์ ์บก์ํ ๋ฐ ์๋ํ
Swift Structs โ Property Observers (willSet & didSet) ๐
AI ์์ฝ
Context
์์ฑ ๋ณ๊ฒฝ ์๋ง๋ค ์๋์ผ๋ก ํจ์๋ฅผ ํธ์ถํ๋ ๊ตฌ์กฐ๋ก ์ธํ ๋ก์ง ๋๋ฝ ๊ฐ๋ฅ์ฑ ์กด์ฌ. ๋ถ์ฐ๋ ์ ๋ฐ์ดํธ ์ง์ ์ผ๋ก ์ธํด ๋ฐํ์ ๋ฒ๊ทธ ๋ฐ์ ํ๋ฅ ์ด ๋์ ์ํคํ ์ฒ์ ํ๊ณ ์ง๋ฉด.
Technical Solution
- Property Observer ๋์ ์ ํตํ ์ํ ๋ณ๊ฒฝ ๋ก์ง์ ์์ฑ ๋ด๋ถ ์บก์ํ
didSet์ ํ์ฉํ์ฌ ๊ฐ ๋ณ๊ฒฝ ์งํ UI ์ ๋ฐ์ดํธ ๋ฐ ๋ฐ์ดํฐ ๋ก๊น ์๋ํwillSet์ ํตํ ๋ณ๊ฒฝ ์ newValue์บก์ฒ๋ก ์ํ ์ค๋ ์ท ๋ฐ ์ ๋๋ฉ์ด์ ๊ธฐ๋ฐ ๋ง๋ จoldValue์๋ ์ ๊ณต ๊ธฐ๋ฅ์ ์ด์ฉํ ์ด์ ์ํ์ ํ์ฌ ์ํ์ ์ ๋ฐ ๋น๊ต ๊ตฌํ- ์ฑ ์ ์ฃผ์ฒด๋ฅผ ๊ฐ๋ฐ์์์ Swift ๋ฐํ์์ผ๋ก ์ด์ ํ์ฌ ์ ๋ฐ์ดํธ ๋๋ฝ ๋ฐฉ์ง
- ๋ฌด๊ฑฐ์ด ์์ ์ ์ธ ๋ฐ ๊ฐ๋ฒผ์ด ๋ฆฌ์กํฐ๋ธ ์์ ์์ฃผ์ ์ค๊ณ๋ก ์คํ ์๊ฐ ์์ธก ๊ฐ๋ฅ์ฑ ํ๋ณด
์ค์ฒ ํฌ์ธํธ
- ๋จ์ UI ์ ๋ฐ์ดํธ๋ ๋ก๊น ๋ฑ ๊ฒฝ๋ ์์ ๋ง Property Observer ๋ด์ ๋ฐฐ์นํ ๊ฒ - ๋คํธ์ํฌ ํธ์ถ์ด๋ ๋๊ท๋ชจ ์ ๋ ฌ ๋ฑ Heavy Operation์ ๋ช ์์ ํจ์ ํธ์ถ๋ก ๋ถ๋ฆฌํ ๊ฒ - ๋ณ๊ฒฝ ์ ํ ์ํ ๋น๊ต๊ฐ ํ์ํ ๊ฒฝ์ฐ `oldValue`์ `newValue` ํ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒํ ํ ๊ฒ - ์ํ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ๋ถ์ ํจ๊ณผ(Side Effect)๊ฐ ๋น๋ฒํ ์์ฑ์ `didSet` ์ ์ฉ์ ์ฐ์ ๊ณ ๋ คํ ๊ฒ