iOS) MVVM + RxSwift, RxCocoa ์ ์šฉ

โœ… RxSwift ๋Š” mvvm ๊ณผ ํ•จ๊ป˜ ์“ฐ๊ธฐ๋กœ ์œ ๋ช…ํ•œ๋ฐ ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์ž ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์—์„œ ์ถœ๋ฐœํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ๊ณผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์ „ํŒŒ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ํŠน์ • ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋กœ์ง์— ์กฐ๊ธˆ ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ReactiveX ์ด๊ณ , Swift ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ RxSwift ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  RxSwift ๋Š” mvvm ํŒจํ„ด์—์„œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์†Œ๊ฐœ๋ฉ๋‹ˆ๋‹ค. mvvm ํŒจํ„ด์—์„œ๋Š” view model ์„..

iOS/RxSwift 2023. 8. 31. 21:47
iOS) ๊ฐ•ํ•œ ์ˆœํ™˜ ์ฐธ์กฐ(Strong Reference Cycle)๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•˜๋‚˜์š”?

"์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณ„์† ์‚ฌ์šฉ๋˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ์–ด์•ผ ํ•œ๋‹ค." ๋ผ๋Š” ๋ช…๋ถ„์„ ์ฃผ๋Š” ๊ฒƒ์ด Strong Reference(๊ฐ•ํ•œ ์ฐธ์กฐ)์ž…๋‹ˆ๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŠธ๊ฐ€ ์ฆ๊ฐ€๋  ๋•Œ๋Š” ๊ฐ•ํ•œ ์ฐธ์กฐ์ธ ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•ํ•œ ์ฐธ์กฐ๋Š” ๋ณ„๋„์˜ ์‹๋ณ„์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ•ํ•œ ์ฐธ์กฐ๋กœ ์—ฌ๊ฒจ์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ ์–ด๋–ค ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์˜ ์‚ฌ์šฉ์ด ๋๋‚ฌ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŠธ๊ฐ€ 0์ด ๋˜์ง€ ์•Š์•„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” memory leak ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•ํ•œ์ฐธ์กฐ ์ˆœํ™˜(strong reference cycle)์ด๋‹ค. ์–ธ์ œ ๋ฐœ์ƒํ•˜๋‚˜์š”? ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์„œ๋กœ๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ์ฐธ์กฐํ•˜์—ฌ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๋ณ€์ˆ˜์— ์ธ์Šคํ„ด์Šค๋ฅผ ํ• ๋‹นํ•˜๋ฉฐ ์ƒ๊ธฐ๋Š” ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŠธ ์ด์™ธ์— ์„œ๋กœ๊ฐ€ ์ฐธ์กฐํ•˜๋ฉด์„œ ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŠธ๊ฐ€ ์ถ”๊ฐ€๋กœ ์ฆ๊ฐ€. nil ์„ ํ• ..

iOS 2023. 7. 12. 18:29
iOS) ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ข…๋ฃŒ ์‹œ์  Dipsatch Group ๋กœ ์•Œ๊ธฐ

๋‚ด์šฉ ์œ„์ ฏ์—์„œ Intent ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ IntentHandler ์—์„œ defaultparameter type ๋ฉ”์„œ๋“œ๋กœ ์œ„์ ฏ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿšจ ๋น„๋™๊ธฐ ์„œ๋ฒ„ ํ†ต์‹  ์ž‘์—… ์ดํ›„์— ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋น„๋™๊ธฐ์ ์ธ ์„œ๋ฒ„ํ†ต์‹  ์ž‘์—…์˜ ์ข…๋ฃŒ ์‹œ์  ์ดํ›„์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. // ์œ„์ ฏ ์ถ”๊ฐ€ํ• ๋•Œ ํ˜ธ์ถœ. ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •. // โœ… ์„œ๋ฒ„ํ†ต์‹  ํ›„์— ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฆฌํ„ด. // ์„œ๋ฒ„ํ†ต์‹  ํ›„์— ๊ฐ’์ด ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ nil ๋ฆฌํ„ด. func defaultMyCard(for intent: MyCardIntent) -> MyCard? { var myCard: MyCard? // โœ… DispatchGroup ์‚ฌ์šฉ. let group = Dispa..

iOS 2023. 6. 19. 15:30
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๋งํฌ
Total
Today
Yesterday