[RxSwift] Debounce vs Throttle

๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋…ธ์ถœํ• ๋•Œ, ํ‚ค์›Œ๋“œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•œ emit์„ ์ œ์–ดํ•˜๋ ค๊ณ  Debounce๋ผ๋Š” ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. RxSwift๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ Throttle์ด๋ผ๋Š” ์˜คํผ๋ ˆ์ดํ„ฐ๋ฅผ ์ ‘ํ–ˆ๋Š”๋ฐ, Debounce์™€ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ๋ช…ํ™•ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์–ด ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Debounce์™€ Throttle์€ ์ด๋ฒคํŠธ๋ฅผ (์–‘์ ์ธ ์ธก๋ฉด์—์„œ) ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์ •์˜์™€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ๋””๋ฐ”์šด์Šค์— ๋Œ€ํ•œ ์ •์˜์ž…๋‹ˆ๋‹ค. ์ง๊ด€์ ์ธ ๋งˆ๋ธ” ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋จผ์ € ๋ณด์ž๋ฉด. ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋“ค์–ด์™”๋Š”๋ฐ ๋งˆ์ง€๋ง‰ item๋งŒ emit ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ด ์ง€๋‚˜๊ธฐ ์ „์— ๊ฐ’์ด ๋“ค์–ด์˜ค๋ฉด ๊ทธ ๊ฐ’๋“ค์€ emit ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊น ๊ฐ„๊ฒฉ์ด 1์ดˆ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ! ๊ฐ’์„ ..

iOS & swift 2021. 4. 20. 18:14
[swift] final, static, class ( + ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ )

final ์“ฐ๋Š” ์ด์œ ! static ์“ฐ๋Š” ์ด์œ ! class์™€ ์ฐจ์ด ํ•ญ์ƒ ์• ๋งคํ•˜๊ฒŒ ํ–ˆ๋˜ ๊ฒƒ๋“ค.. ํ•œ๋ฒˆ ์ •๋ฆฌํ•˜๋Š” ๊ฒŒ ์ข‹๊ฒ ๋‹ค ์‹ถ์–ด์„œ ๊ธ€์„ ์”๋‹ˆ๋‹ค. ๊ธ€์ด ๋„ˆ๋ฌด ๊ธฐ๋‹ˆ๊น ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆด๊ฒŒ์š”. 1. final ์€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ. 2. static๊ณผ class์˜ ์“ฐ์ž„์€ ๋ฉ”์†Œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. -> ํƒ€์ž… ๋ฉ”์†Œ๋“œ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋จ, ์ฐจ์ด๋Š” static์€ ์ƒ์†์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค๋Š”์ . ์š”์•ฝ์„ ๋ณด๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์‹ ๋‹ค๋ฉด (์ €๋Š” ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์„œ ์ฐพ์•„๋ณด๊ณ  ์ •๋ฆฌํ•จ) ๋’ท๋ฐ›์นจ๋˜๋Š” ๋‚ด์šฉ๊นŒ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ์œผ๋‹ˆ, ๋‹ค ์ฝ์–ด๋ณด์‹ ๋‹ค๋ฉด ์ดํ•ด๋˜์‹œ๋ฆฌ๋ผ ์ƒ๊ฐํ•ด์š”. ์šฐ์„  ์ฒซ๋ฒˆ์งธ, final ์€ Overriding์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Overriding ์ด๋ž€? ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†..

iOS & swift 2021. 4. 5. 23:01
[swift] compactMap , flatMap

์Œ~ ์ฒซ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ญ๋ถ€ํ„ฐ ์จ์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. (๋ˆ„๊ฐ€ ๋ด์ค„์ง„ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ) ํ˜„์žฌ ์‹œ์ ์—์„œ ๊ฐ•์˜ ํ•™์Šต ์ค‘ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค ํ•˜๋Š” ์šฉ์–ด๋ถ€ํ„ฐ ์ •๋ฆฌํ•ด๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•˜์—ฌ ์ •๋ฆฌํ•ด๋‚˜๊ฐˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ. compactMap ์• ํ”Œ ๋ฌธ์„œ์—์„œ compactMap ์ •์˜๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. nil์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๊ฐ’์˜ ๋ฐฐ์—ด์„ map์€ map(ํ•จ์ˆ˜, ์ž๋ฃŒํ˜•) ์ด๋ ‡๊ฒŒ ์ƒ๊ฒจ์„œ ์ž๋ฃŒํ˜•์„ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์˜ˆ์ œ๋กœ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Map vs CompactMap map์€ ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ์—ˆ์ฃ ? (์˜ˆ์ œ ๋‘๋ฒˆ์งธ ์ค„) ํ•จ์ˆ˜์˜ ํ˜•ํƒœ๋Š” ํด๋กœ์ €์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์ธ ๋ฐฐ์—ด๋“ค์˜ ์š”์†Œ๋ฅผ Intํ˜•์œผ๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์˜€๋„ค์š” Int(three)๋Š” nil์ด๊ณ ..

iOS & swift 2021. 3. 26. 17:44