๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด 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 ์งˆ๋ฌธ๋“ค์„ ์ž˜ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!