๊ฐ๋จํ๊ฒ property๋ member ๋ณ์์ด๋ค. ๊ทธ๋ฐ๋ฐ Swift์๋ ๋ค์ํ ์ข
๋ฅ์ property๊ฐ ์กด์ฌํ๋ค. ์ฌ์ค ์ด๋ป๊ฒ ๋ณด๋ฉด ํ์ฉ๋ฐฉ๋ฒ? ํ
ํฌ๋์ ๊ฐ๊น๊ฒ ๋ค. ์ด๋ป๊ฒ property๋ฅผ ๊ด๋ฆฌํ๋ ์ง ์๋ค๋ฉด, ์ค์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ข๊ฒ ์ ์งํ ์ ์๋ค. ๊ทธ๋ผ ์ถ๋ฐํด๋ณด์.
Property์ ์ข
๋ฅ
- ์ญํ ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
- ์ธ์คํด์ค ํ๋กํผํฐ
- ํ์
ํ๋กํผํฐ
- ์ข
๋ฅ
- ์ ์ฅ ํ๋กํผํฐ
- ์ฐ์ฐ ํ๋กํผํฐ
var
๋ก๋ง ์ ์ธ ๊ฐ๋ฅ
- ์ฝ๊ธฐ ์ ์ฉ ๊ตฌํ์ ๊ฐ๋ฅ -
get
๋ธ๋ก์ ์์ฑ
- ์ฐ๊ธฐ ์ ์ฉ ๊ตฌํ์ ๋ถ๊ฐ๋ฅ
์์ 4๊ฐ์ง๊ฐ ์์ฌ์ ์กด์ฌํ ์ ์๋ค. ์ฆ 4๊ฐ์ง์ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌ.
- ์ธ์คํด์ค ์ ์ฅ ํ๋กํผํฐ
- ํ์
์ ์ฅ ํ๋กํผํฐ
- ์ธ์คํด์ค ์ฐ์ฐ ํ๋กํผํฐ
- ํ์
์ฐ์ฐ ํ๋กํผํฐ
Property์ ํน์ง
- ๊ตฌ์กฐ์ฒด, ํด๋์ค, ์ด๊ฑฐํ ๋ด๋ถ์ ๊ตฌํ์ด ๊ฐ๋ฅ
- ์ด๊ฑฐํ์๋ ์ฐ์ฐ ํ๋กํผํฐ๋ง ๊ตฌํ ๊ฐ๋ฅ
- ์ฝ๊ธฐ ์ฐ๊ธฐ ๋ชจ๋๊ฐ๋ฅํ๊ฒ ํ๋ ค๋ฉด
get
๋ธ๋ญ๊ณผ set
๋ธ๋ญ ๋ชจ๋ ๊ตฌํ
- ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด
get
๋ง ๊ตฌํ
set
์์ ์์์ ๋งค๊ฐ๋ณ์ newValue๋ฅผ ์ฌ์ฉํ ์ ์์
- ์ธ์คํด์ค ์ ์ฅ ํ๋กํผํฐ๋ ์ผ๋ฐ์ ์ด๋ ํจ์ค
- ์ธ์คํด์ค ์ฐ์ฐ ํ๋กํผํฐ๋, ํน์ ๊ฐ์ ๋ฐ์์ ๋ค๋ฅธ ์ ์ฅ ์ธ์คํด์ค์ ๊ฐ์ ์ค์ ํด์ค์ผ ํ๋ค๊ฑฐ๋ ๋ค๋ฅธ ํ๋กํผํฐ๋ก ๋ถํฐ ์ฐ์ฐ์ ํตํด ํด๋น ํ๋กํผํฐ์ ๊ฐ์ด ๋์ถ๋ ๋ ์ฃผ๋ก ์ฌ์ฉ
- ํ์
์ ์ฅ ํ๋กํผํฐ๋ ๊ธฐ์กด์ ์๊ณ ์๋ ํ์
ํ๋กํผํฐ
- ํ์
์ฐ์ฐ ํ๋กํผํฐ ์ญ์ ๋น์ทํ๋ค.
- ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด์ introduce์ ๊ฐ์ ํจ์๋ฅผ ์ฝ๊ธฐ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ฒดํ๋ ๊ฒ๋ ๊ฐ๋ฅ
Property Observers
- ํ๋กํผํฐ ๊ฐ์์๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋กํผํฐ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋, ์ํ๋ ๋์์ ์ํํ ์ ์์
- ๊ฐ์ด ๋ณ๊ฒฝ๋๊ธฐ ์ง์ ์ willSet ๋ธ๋ญ์ด, ๋ณ๊ฒฝ ์งํ didSet ๋ธ๋ญ์ด ํธ์ถ๋จ
- ๋ณ๊ฒฝ๋๋ ค๋ ๊ฐ์ด ๊ธฐ์กด ๊ฐ๊ณผ ๊ฐ๋๋ผ๋ ํญ์ ๋์
willSet
๋ธ๋ญ์์ ์์์ ๋งค๊ฐ๋ณ์ newValue
๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
didSet
๋ธ๋ญ์์๋ oldValue
๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
- ํ๋กํผํฐ ๊ฐ์์๋ ์ฐ์ฐ ํ๋กํผํฐ์์ ์ฌ์ฉ ๋ถ๊ฐ
- ํจ์, ๋ฉ์๋, ํด๋ก์ , ํ์
๋ฑ์ ์ง์ญ/์ ์ญ ๋ณ์์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
Property Wrappers
-
property ์ ์ฅ ๋ฐฉ๋ฒ ์ฝ๋์ property ๊ด๋ฆฌ ์ฝ๋๋ฅผ ๊ตฌ๋ถ
-
property set, getํ ๋ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ ๋ฐ๋ณต์ฝ๋๋ฅผ ๊ด๋ฆฌํ ์ ์์
- ๋ฐ์ดํฐ ์ ์ฅ์ ์ค๋ ๋ ์ฒดํฌ
-
struct, enum, class ์ ์ธ ์์ @propertyWrapper
๋ฅผ ๋ถ์ด๊ณ wrappedValue
์ ์ํ๋ฉด ๋จ
-
ํน์ ๋ฐ์ดํฐ์ boundary๋ฅผ ์ ํ ์ ์์
-
Initializer๋ฅผ ํตํด value ์ด๊ธฐํ ๊ฐ๋ฅ
-
Projected Value
projectValue
๋ฅผ ์ฌ์ฉํ๋ฉด wrappedValue
๋ฅผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋๋ฌ๋ผ ์ ์์
$
๋ฅผ ํตํด ์ ๊ทผ์ด ๊ฐ๋ฅํจ