๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

2022.01.15 ์˜ค๋Š˜์˜ ๋ฐฐ์›€

์˜ค๋Š˜ ํ•œ ์ผ.

  • CALayer ์ •๋ฆฌํ•˜๊ธฐ - ์ด์ œ ์ข€ ์ดํ•ด๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.
  • ๋ฉด์ ‘์ค€๋น„ - Rx ๊ณต๋ถ€

์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ.

  • ๋ทฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์‚ฌ์šฉํ•  CALayer์˜ ํƒ€์ž…์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. layerClass ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ทฐ์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ์›ํ•˜๋Š” ๋ ˆ์ด์–ด ํด๋ž˜์Šค์˜ ๋ฉ”ํƒ€ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. 
  • UIView๋Š” CALayer์˜ delegate ๊ฐ์ฒด์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” CALayerDelegate์— ๋‘ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.
  • ๋‘ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•ด์•ผํ•˜๋Š” ์ผ์€ CALayer์— ํ™”๋ฉด์— ๊ทธ๋ฆฐ ์ปจํ…์ธ ๋ฅผ ๋น„ํŠธ๋งต์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์™œ ์ด๋ ‡๊ฒŒ ํ•˜๋ƒ๋ฉด CALayer๋Š” ์ง์ ‘ ๊ทธ๋ฆฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋น„ํŠธ๋งต์œผ๋กœ ์ปจํ…์ธ ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ด๊ฑธ ์บ์‹ฑํ•ด๋‘์—ˆ๋‹ค๊ฐ€ ํ™”๋ฉด์— ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. 
  • ๋น„ํŠธ๋งต์ด๋ผ์„œ GPU์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ํ•ญ์ƒ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ CPU๋กœ ๋ทฐ๋ฅผ ๊ทธ๋ ค์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์„ ์บ์‹ฑ๊ณผ GPU๋กœ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. 
  • ์• ๋‹ˆ๋ฉ”์ด์…˜๋„ ์ฝ”์–ด ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋น„ํŠธ๋งต๊ณผ ์ปจํ…์ธ ์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›๋ž˜ ๋น„ํŠธ๋งต์ด๋ž‘ ์ตœ์ข…์ ์œผ๋กœ ์›ํ•˜๋Š” ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ์ „๋‹ฌํ•˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  • Traits๋Š” ์„ธ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. single, maybe, completable.
  • single์€ success or error, completable์€ completed or error, maybe๋Š” completed or success or error.
  • ์šฉ๋„๋Š” ๋„คํŠธ์›Œํ‚น์ฒ˜๋Ÿผ ์„ฑ๊ณต์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋Œ์•„์˜ค๊ณ  ์•„๋‹ˆ๋ฉด ์‹คํŒจ์ธ ๊ฒฝ์šฐ์—๋Š” single์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๊ณ , ๋ฐ์ดํ„ฐ ์ €์žฅ์ด๋‚˜ ํŒŒ์ผ์“ฐ๊ธฐ ์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” completable์ด ์ ํ•ฉํ•˜๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ traits๋ฅผ ์ผ์œผ๋ฉด ๋” ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋‚˜์™”์„ ๊ฒƒ ๊ฐ™๋‹ค..
  • never๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ฐฉ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. complete๋„ ์—†๊ณ  error๋„ ์—†๊ณ  next๋„ ์—†๋‹ค. ๊ทธ๋ƒฅ ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์—ญํ• ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” just๋กœ ํ•œ ๋ฒˆ์€ ๋ฌด์กฐ๊ฑด ๋ฐฉ์ถœ์„ ํ•ด์คฌ๋Š”๋ฐ never๋ฅผ ์ผ๋‹ค๋ฉด ํ…Œ์ŠคํŠธํ•  ๋Œ€์ƒ์ด ๋” ํ™•์‹คํ•˜๊ฒŒ ๋ณด์˜€์„ ๊ฒƒ ๊ฐ™๋‹ค. 

์˜ค๋Š˜ ๋Š๋‚€ ๊ฒƒ.

  • ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด ํ• ์ˆ˜๋ก ํ”„๋กœ์ ํŠธ์— ์•„์‰ฌ์šด ์ ๋“ค์ด ๋งŽ์ด ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜์ค‘์— ํ•œ ๋ฒˆ ์ญ‰ ๋ณด์™„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค!
  • ์š”์ฆ˜ ์ง‘์ค‘์ด ๋„ˆ๋ฌด ์•ˆ๋œ๋‹คใ…  ์ •์‹ ์ฐจ๋ฆฌ์ž!!!
  • ์ธ์„ฑ ๋ฉด์ ‘ ๋ถ€๋ถ„๋„ ์ค€๋น„๋ฅผ ์ข€ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ง„์งœ ์–ด๋ ต๋‹ค.. ์ƒ๊ฐ์„ ๋งŽ์ด ์ •๋ฆฌํ•ด๋‘์–ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๋‚ด์ผ์˜ ๊ณ„ํš.

  • ๋ฉด์ ‘ ์ค€๋น„

์˜ค๋Š˜์˜ ๊ฐ์‚ฌ.

  • ๊ณ„์† ์• ๋งค๋ชจํ˜ธ ํ–ˆ๋˜ CALayer๋ฅผ ์–ด๋Š์ •๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ด์š”!