๐ญ ๋ผ-์ดํ/๐ ํฐ-์์ด-์
์ค๋์ ๋ฐฐ์ #98
๊ฐ๋ฐํ๋ ํ์ด
2021. 12. 20. 02:41
2021.12.19 ์ค๋์ ๋ฐฐ์
์ค๋ ํ ์ผ.
- Swift ๋ฌธ๋ต ๋ง๋ฌด๋ฆฌ, ๋ฐํ
- Method Dispatch ์๋ฃ์์ง
- ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ
์ค๋ ์๋ก ๋ฐ๊ฒฌํ ๊ฒ.
- KVC๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ์คํด์ค์ ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํด์ ํ๋กํผํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์์ ํ ์ ์๋ค.
- ํ๋กํผํฐ ์ต์ ๋ฒ๋ณด๋ค KVO๊ฐ ์ ํธ๋๋ ์ํฉ์ ๊ธฐ์กด ๊ตฌํ์ ์์ ํ๊ฑฐ๋ overrideํ์ง ์๊ณ ์ต์ ๋น์ ํด์ผํ ๋. ์๋ฅผ ๋ค๋ฉด ์ธ๋ถ ํ๋ ์์ ๋ด๋ถ์ ์๋ ํ๋กํผํฐ๋ฅผ ์ต์ ๋นํ๊ณ ์ถ๋ค๋ฉด, ํด๋น ํ๋กํผํฐ๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ ๊ฒ๋ณด๋ค KVO๋ก ์ต์ ๋นํ๋๊ฒ ๋ ์์ ํ๋ค.
- flatMap์ด๋ compactMap์ 1์ฐจ์ ๋ฐฐ์ด์ ์ฐ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ 2์ฐจ์ ๋ฐฐ์ด์ ์ฐ๋ฉด nil์ ๊ฑฐ์ ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ํ์ง์๊ณ flatten๋ง ํด์ค๋ค. nil ์ง์ฐ๊ณ ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ํ๋ ค๋ฉด compactMap์ ํ๋ฒ ๋ ๋ถ์ฌ์ค์ผ ํ๋ค.
์ค๋ ๋๋ ๊ฒ.
- Method Dispatch ํฌ์คํ ์ ํ๋ ค๊ณ ์ ๋ฆฌํ๋ค๊ฐ vtable, protocol witness table ์ชฝ์์ ๊ณต๋ถํ ๋ด์ฉ์ด ์ข ๊น์ด์ก๋ค.. WWDC์์๋ถํฐ ๋ค์ ๋ด์ผ๊ฒ ๋ค.
- ์์ฆ ์๊ณ ๋ฆฌ์ฆ์ด ๋๋ฌด ์ํ๋ฆฐ๋ค.. ๋ด์ฃผ์ ์ฝํ ๋ ๊ฐ ๋ด์ผํ๋๋ฐ ๊ฑฑ์ ์ด๋ค ์ ๋งใ
๋ด์ผ์ ๊ณํ.
- ์๊ณ ๋ฆฌ์ฆ ํ๊ธฐ
- Method Dispatch ๊ณต๋ถ
์ค๋์ ๊ฐ์ฌ.
- Swift ์ง๋ฌธ๋ค์ ์ ๊ณต๋ถํ ์ ์๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!