ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

Kotlin ์นด์นด์˜ค ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ - ConcurrentModificationException, HashMap, hashing

ConcurrentModificationException https://school.programmers.co.kr/learn/courses/30/lessons/92341 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.programmers.co.kr    ์ž๋™์ฐจ์˜ ์ฃผ์ฐจ์žฅ ์ถœ์ž… ๋ˆ„์  ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•œ ํ›„, ๋น„์šฉ์„ ๊ณ„์‚ฐํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค.์•„๋ž˜๋Š” ์ฒ˜์Œ์— ์ž‘์„ฑํ•œ ๋‹ต์•ˆ์ด๋‹ค. ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์„๊นŒ? /** ๋ˆ„์  ์ฃผ์ฐจ ์‹œ๊ฐ„์ด ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดํ•˜๋ผ๋ฉด ๊ธฐ๋ณธ ์š”๊ธˆ ๋ˆ„์  ์ฃผ์ฐจ ์‹œ๊ฐ„์ด ๊ธฐ๋ณธ ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ•˜๋ฉด ์ดˆ๊ณผํ•œ ์‹œ๊ฐ„์— ๋Œ€ํ•ด ๋‹จ์œ„ ์‹œ๊ฐ„ ๋งˆ๋‹ค ๋‹จ์œ„ ์š”๊ธˆ ์ดˆ๊ณผํ•œ ์‹œ๊ฐ„์ด ๋‹จ์œ„ ์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€..

2024.09.04 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ•™์Šต

Safe Navigate Action

๋ฌธ์ œ ์ƒํ™ฉ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ์ƒ๋‹จ์˜ ์‚ฌ์ง„ ๊ถŒํ•œ ๋ณ€๊ฒฝ ์˜์—ญ์„ ํด๋ฆญํ•˜๋ฉด Navigation Action์„ ์ด์šฉํ•ด ModalBottomSheetFragment๊ฐ€ ์‹คํ–‰๋˜์–ด ModalBottomSheet๊ฐ€ ๋ณด์ด๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.   ์ฒœ์ฒœํžˆ ๋ˆŒ๋ €์„ ๋•Œ๋Š” ๋ฌธ์ œ ์—†์—ˆ์œผ๋‚˜, ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์—ฐ์†ํ•ด์„œ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ exception์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.๋‚ด์šฉ์„ ์š”์•…ํ•ด๋ณด๋ฉด, ํ˜„์žฌ ModalBottomSheetFragment์—์„œ ํ˜ธ์ถœํ•œ Action์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.Process: com.bestapp.rice, PID: 12707java.lang.IllegalArgumentException: Navigation action/destination com.bestapp.rice:id/action_profileI..

2024.08.22 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

TIL

240821 TIL - ๋ฉด์ ‘

์˜ค๋Š˜ ๋ฉด์ ‘์„ ๋ณด๊ณ  ์™”๋‹ค. ๊ณผ์ œํ…Œ์ŠคํŠธ 30๋ถ„ + ๊ธฐ์ˆ ๋ฉด์ ‘ 1์‹œ๊ฐ„์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ณผ์ œํ…Œ์ŠคํŠธ๋Š” ๋งฅ๋ถ์„ ์ด์šฉํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ, ๋‚˜๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋งฅ๋ถ์„ ์ด์šฉํ•ด๋ณธ์ ์ด ์—†๋‹ค. ๋งฅ๋งˆ์šฐ์Šค๋„ ์ œ๊ณต๋๋Š”๋ฐ, ์˜ค๋ฅธ์ชฝ ํด๋ฆญ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ์„œ ํ„ฐ์น˜ํŒจ๋“œ๋ฅผ ์ด์šฉํ–ˆ๋‹ค, ๋งฅ๋ถ ํ„ฐ์น˜ํŒจ๋“œ๋„ ์ฒ˜์Œ ์จ๋ด์„œ ๊ทธ๋Ÿฐ์ง€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์„ ๋‘๋ฒˆ ๋ˆŒ๋Ÿฌ๋„ ์˜ค๋ฅธ์ชฝ ํด๋ฆญ์ด ์ž˜ ์•ˆ ๋๋‹ค.๊ทธ ์™ธ์— ํ•œ์˜ ์ „ํ™˜, IDE ๋‹จ์ถ•ํ‚ค ๋“ฑ ์œˆ๋„์šฐ๋ž‘ ๋‹ค๋ฅธ ๊ฒƒ์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ฃผ์–ด์ง„ ๋ฌธ์ œ ์กฐ๊ฑด์„ ๋‹ค ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™๋‹ค.... ๋งฅ๋ถ ์‚ฌ์•ผํ• ๊นŒ.....๐Ÿค” OS์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณผ์ œํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•œ ์ด์œ ๊ฐ€ 2๊ฐ€์ง€ ์žˆ๋‹ค. 1. Activity LifecycleScope Activity์—์„œ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์‹œ๊ฐ„์ด 5์ดˆ ์ด์ƒ ์†Œ์š”๋˜์–ด exception์ด ๋ฐœ์ƒ..

2024.08.22 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ•™์Šต

Flow, Channel, ChannelFlow, CallbackFlow

Flow์™€ Channel์˜ ๋ชฉ์  Flow : ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Channel : ์ฝ”๋ฃจํ‹ด ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Flow & Channel ๋น„๊ต Flow๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ŠคํŠธ๋ฆผ์œผ๋กœ, ๊ด€์ฐฐ์ž๊ฐ€ ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” Cold source ์ž…๋‹ˆ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ Flow๋Š” ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ collect ํ•จ์ˆ˜์— ์˜ํ•ด ์†Œ๋น„๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ, buffer ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฒ„ํผ๋ฅผ ์„ค์ •ํ•˜๋ฉด, ๋ฒ„ํผ ํฌ๊ธฐ + 1 ๋งŒํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํผ๊ฐ€ ์žˆ๋Š” Flow๋Š” Hot source ์ž…๋‹ˆ๋‹ค. onBufferOverflow ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฒ„ํผ๊ฐ€ ๊ฝ‰์ฐผ์„ ๋•Œ ๋™์ž‘์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ์˜ 3๊ฐ€์ง€ ์ข…๋ฅ˜..

2024.08.15 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ•™์Šต

RecyclerView Itemdecoration ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ

1. ๊ตฌํ˜„ ์š”๊ตฌ ์‚ฌํ•ญ ํ”„๋กœํ•„ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๋“ค์ด ๋ชจ์ž„์—์„œ ์ฐ์—ˆ๋˜ ์‚ฌ์ง„์„ GridView ํƒ€์ž…์œผ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” UI๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด๋•Œ, ์ธ์Šคํƒ€๊ทธ๋žจ๊ณผ ๊ฐ™์ด ์‚ฌ์ง„ ์‚ฌ์ด์— ๋™์ผํ•œ Margin์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. 2. ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์‚ฌ์ง„๋“ค์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„ํ•œ RecyclerView ์ž…๋‹ˆ๋‹ค.ํ•œ ์—ด์— ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด GridLayoutManager๋ฅผ ์ด์šฉํ–ˆ์œผ๋ฉฐ, ๊ฐœ์ˆ˜๋Š” 3๊ฐœ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.  ViewHolder์—์„œ ์‚ฌ์šฉํ•œ XML ์ž…๋‹ˆ๋‹ค.RecyclerView์—์„œ ํ•œ ์—ด์˜ ์•„์ดํ…œ์„ 3๊ฐœ๋กœ ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, 3๊ฐœ์˜ ์•„์ดํ…œ์ด ๋ชจ๋“  width๋ฅผ ์ฐจ์ง€ํ•˜๋„๋ก Layout์˜ width๋ฅผ match_parent๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด๋ฏธ์ง€๊ฐ€ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก Style์„ ์ •์˜ํ•ด ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.์•„์ดํ…œ ์‚ฌ์ด์˜ ์„ธ๋กœ ๋ฐฉํ–ฅ M..

2024.07.24 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ›„๊ธฐ

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Android 3๊ธฐ ์ž์„ธํ•œ ํ›„๊ธฐ

์ด์ „์— ์ž‘์„ฑํ•œ ์‹œ์ ์œผ๋กœ๋ถ€ํ„ฐ 2์ฃผ๊ฐ€ ์ง€๋‚œ ์‹œ์ ์— ๋” ์ž์„ธํ•œ ํ›„๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. https://dodobest.tistory.com/113 240629 TIL - 1์ฃผ ๋‚จ์€ ์‹œ์ ์— ์ž‘์„ฑํ•˜๋Š” ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Android 3๊ธฐ ํ›„๊ธฐTIL์„ ์•ˆ ์“ด์ง€ 2๊ฐœ์›”์ด ๋œ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ˆ˜๋ฃŒ๊นŒ์ง€ ์ผ์ฃผ์ผ ๋‚จ์€ ์‹œ์ ์— ํ›„๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์  - ๊ต์œก ์‹œ๊ฐ„ ๋‚ด๋‚ด ์ƒ์ฃผํ•˜์‹œ๋Š” ๋‹ค์–‘ํ•œ ํŠœํ„ฐ ๋‹˜๋“ค ์ด ๋ถ€๋ถ„์ด ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ดdodobest.tistory.com  1. ์ฐธ์—ฌ ๊ณ„๊ธฐ 2022๋…„ ํ•˜๋ฐ˜๊ธฐ์— ๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ์บ ํ”„ 7๊ธฐ Andorid ๊ณผ์ •์— ์ฐธ์—ฌํ•œ ๊ฒฝํ—˜์ด ์žˆ์œผ๋‚˜, ํ•™์Šต ๋ฐฉํ–ฅ์— ์žˆ์–ด์„œ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค. ์ฝ”๋“œ๋ชฝํ‚ค๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ๋งŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜์ƒ์„ ๋ณด๊ณ , ํ•„์š”ํ•˜์ง€ ..

2024.07.14 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

TIL

240629 TIL - 1์ฃผ ๋‚จ์€ ์‹œ์ ์— ์ž‘์„ฑํ•˜๋Š” ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Android 3๊ธฐ ํ›„๊ธฐ

TIL์„ ์•ˆ ์“ด์ง€ 2๊ฐœ์›”์ด ๋œ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ˆ˜๋ฃŒ๊นŒ์ง€ ์ผ์ฃผ์ผ ๋‚จ์€ ์‹œ์ ์— ํ›„๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์  - ๊ต์œก ์‹œ๊ฐ„ ๋‚ด๋‚ด ์ƒ์ฃผํ•˜์‹œ๋Š” ๋‹ค์–‘ํ•œ ํŠœํ„ฐ ๋‹˜๋“ค ์ด ๋ถ€๋ถ„์ด ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„์นจ 9์‹œ๋ถ€ํ„ฐ ์ €๋… 9์‹œ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ํŠœํ„ฐ ๋‹˜๋“ค์ด ์˜จ๋ผ์ธ ๊ต์œก ๊ณต๊ฐ„์— ์ƒ์ฃผํ•˜๊ณ  ๊ณ„์…”์„œ ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฒ˜์Œ ํ•™์Šตํ•˜์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด ์ด ๋ถ€๋ถ„์ด ์˜คํžˆ๋ ค ๋‹จ์ ์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠœํ„ฐ ๋‹˜์—๊ฒŒ ๊ฐ€์„œ ๋ฐ”๋กœ ์งˆ๋ฌธ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ณด๋‹ˆ, ์†Œํ†ต ์ฑ„๋„์ธ Slack ์งˆ๋ฌธ๋ฐฉ์— ์งˆ๋ฌธ์ด ์˜ฌ๋ผ์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.(๊ธฐ์ˆ˜๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๋ชจ๋ฅธ๋‹ค๊ณ  ์ธ์ง€ํ•œ ์ง€์‹๋งŒ ์งˆ๋ฌธ์„ ํ†ตํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ง€์‹์ด ์—†๋‹ค๋ฉด ํฐ ์„ฑ์žฅ์„ ํ•˜๊ธฐ๋ž€ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ์บ ํ”„ ์ฑŒ๋ฆฐ์ง€ ๊ณผ์ •์—์„œ ๊ณต..

2024.06.29 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ•™์Šต

์™œ repeatOnLifecycle ์•ž์— viewLifecycleOwner๋ฅผ ๋ถ™์—ฌ์•ผํ• ๊นŒ?

ํ•ต์‹ฌ ๋‚ด์šฉ ์„  ์ •๋ฆฌ์™œ repeatOnLifecycle ์•ž์— viewLifecycleOwner๋ฅผ ๋ถ™์—ฌ์•ผํ• ๊นŒ? ๊ณต์‹๋ฌธ์„œ ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ repeatOnLifecycle ์•ž์— viewLifecycleOwner๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ์ผ๊นŒ์š”?  class MyFragment : Fragment() { val viewModel: MyViewModel by viewModel() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) // Create a new coroutine in the lifecycleScope ..

2024.06.26 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ•™์Šต

Iterable, Iterator, Collection

์ „์ฒด์ ์ธ ๊ตฌ์กฐCollection, Iterable, Iterator์˜ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ฐ Interface๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.  Iterable Iterator๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋งŒ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” iterate ๋  ์ˆ˜ ์žˆ๋Š” sequence๋ฅผ ์˜๋ฏธํ•œ๋‹ค.iterate์˜ ์‚ฌ์ „์  ์˜๋ฏธ : (๊ณ„์‚ฐ·์ปดํ“จํ„ฐ ์ฒ˜๋ฆฌ ์ ˆ์ฐจ๋ฅผ) ๋ฐ˜๋ณตํ•˜๋‹ค public interface Iterable { public operator fun iterator(): Iterator} operator iterator ํ•จ์ˆ˜ ์•ž์— operator ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค. operator๋Š” 1 + 3 ๊ณผ ๊ฐ™์ด ํ•จ์ˆ˜(add)๋ฅผ symbol(+)๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š”..

2024.05.21 ๊ฒŒ์‹œ๋จ

ํฌ์ŠคํŒ… ์ธ๋„ค์ผ ์ด๋ฏธ์ง€

ํ•™์Šต

Room์— ์ดˆ๊ธฐ ๊ฐ’์„ ๋„ฃ์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์ฒ˜์Œ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์ €์žฅ์†Œ, ์บ์‹œ๋ฅผ ์‚ญ์ œํ•œ ํ›„ ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์„ ๋•Œ Room์— ์ดˆ๊ธฐ ๊ฐ’์„ ๋„ฃ์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์•ˆ๋‚ดํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๊ณผ ๋ฌธ์ œ์ ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. RoomDatabase.Callback() Room DatabaseBuilder๋ฅผ ์ด์šฉํ•ด Database๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, builder์˜ addCallBack ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ RoomDatabase.Callback ํด๋ž˜์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Callback ํด๋ž˜์Šค๋Š” ์ด 3๊ฐ€์ง€ ํ•จ์ˆ˜๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. onCreate : database๊ฐ€ ์ตœ์ดˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ๋ชจ๋“  table์ด ์ƒ์„ฑ๋œ ์ดํ›„์— ํ˜ธ์ถœ๋œ๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.onOpen : database๊ฐ€ open ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.onDestruc..

2024.05.18 ๊ฒŒ์‹œ๋จ