ARC (Automatic Reference Counting) ๐Ÿงฎ

7๊ณผ11์‚ฌ์ดยท2023๋…„ 9์›” 22์ผ
0
post-thumbnail

seSsac์„ ์ง€์›ํ•˜๊ณ  ๋ฉด์ ‘์„ ๋ดค๋˜ ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜์˜€๋˜ ARC.
๊ทธ๋ž˜์„œ์ธ์ง€ ๊ธฐ์–ต์—์„œ ์žŠ์„ ์ˆ˜ ์—†๋Š” ์šฉ์–ด๋‹ค.
์˜ค๋Š˜ ํŠน๊ฐ•์—์„œ ๋‹ค๋ฃฌ ARC ๊ด€๋ จํ•ด์„œ ์กฐ๊ธˆ ๋” ์ฐพ์•„๋ณด๊ณ  WWDC ๋‚ด์šฉ์„ ๋ณด๋ฉด์„œ ๋“  ์ƒ๊ฐ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

ARC (Automatic Reference Counting)

  • swift์—์„œ ์ž๋™์ ์œผ๋กœ reference(์ฐธ๊ณ )ํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜๋Š” ๊ธฐ๋Šฅ
  • ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ ์ดํ›„, ๋ณ„๋„๋กœ ์ฐธ์กฐ๋ฅผ ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ๋‚ด๋ ค๋ฒ„๋ฆฌ๋Š” ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ฒ ๋‹ค!

ARC๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ ๋ฐฐ์› ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” swift์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํด๋กœ์ € ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.
์ด์ „์— ํด๋กœ์ €๋Š” ์ด๋ฆ„์—†๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ๋ฐฐ์› ์—ˆ๋‹ค! [๋งํฌ]
ํ•˜๋‚˜์˜ ํŠน์ง•์€ ๋ณ€์ˆ˜์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๊ณณ ์ €๊ณณ์œผ๋กœ ๋˜์ ธ์งˆ ์ˆ˜ ์žˆ๋‹ค ์ •๋ฆฌํ–ˆ์—ˆ๋Š”๋ฐ ์ด ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์ด์ง€๋งŒ ์ฐธ์กฐ๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํด๋กœ์ €๋Š” ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์ฐธ์กฐ(reference) ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๊ฒŒ ์Œ“์ด๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋˜๋Š” ๊ณผ๋ถ€ํ™” ๋“ฑ์ด ๋ฐœ์ƒํ•˜์—ฌ ์•ฑ ํšจ์œจ์ด ๋–จ์–ด์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์ง„๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ฐจ์›์—์„œ ์• ํ”Œ์—์„œ ๋งŒ๋“  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋„๊ตฌ์ด๋‹ค. ๊ฐ์ฒด(ํด๋กœ์ € ๋“ฑ)์— ๋Œ€ํ•œ ์ฐธ์กฐ ์นด์šดํŠธ๊ฐ€ ํ˜„์žฌ ๋ช‡์ธ์ง€ ์ง€์† ํ™•์ธํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ๋๋‚˜๋Š” ์‹œ์ ์— ์ฐธ์กฐ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐฏ์ˆ˜๋ฅผ, ์•„๋‹ ๊ฒฝ์šฐ 0์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค!

  • ARC๋Š” retain๊ณผ release๋ผ๋Š” ์‹œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ฐธ์กฐ ํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ retain, ์ฐธ์กฐ๊ฐ€ ์ข…๋ฃŒ๋  ๊ฒฝ์šฐ release(์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๊ฐ์ฒด๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์—†์œผ๋ฉด ๋ฐ”๋กœ ํ•ด์ œ)๋ฅผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
    ๋‹จ ์–ด๋–ค ์ด์œ ๋กœ ์ฝ”๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•„ ์ผ์œผํ‚ค๋Š” ์ด์Šˆ์— ๋Œ€ํ•ด ๋ฐฐ์›Œ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋ฅผ Memory Leak๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


Memory Leak(๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜)

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” '๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๊ฐ€ ๋  ์ˆ˜ ์—†๋Š” ์ƒํƒœ'๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

๋ญ”๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์ง€์ง€๋งŒ, ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋ฉด ์˜ค๋Š˜ ๋งŒ๋‚œ ์—ฌ์ž์นœ๊ตฌ, ๋‚จ์ž์นœ๊ตฌ๊ฐ€ ์ง‘์„ ๊ฐ€์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ๋‹น์‹ ์„ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ฒ ๋‹ค! ์–ดํ”Œ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์ฐพ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋˜๋Š” ์ƒํ™ฉ์„ ์˜๋ฏธํ•œ๋‹ค.


CS๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋Š” SSD, HDD ๊ฐ™์ด ์šฉ๋Ÿ‰์ด ๊ฑฐ๋Œ€ํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์ ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์ง€์†๋˜๊ณ  ๋งŽ์•„์งˆ์ˆ˜๋ก ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ ธ์„œ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๊ฐ€ ๋˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์•ˆ๋  ์ˆ˜ ์žˆ๋Š” ์‹œ์ ๊นŒ์ง€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ! [์ฐธ๊ณ  ๋งํฌ]


๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ์ฒดํฌ ํˆด

์•ž์„œ ์ž๋™์œผ๋กœ ARC๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒํ™ฉ์„ ํ™•์ธํ•˜๊ณ  ํ•ด์ œ์‹œ์ผœ์ค€๋‹ค๊ณ  ํ–ˆ๋‹ค.
ํ•˜์ง€๋งŒ ARC๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด๋Ÿด ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ถ€๋ถ„์„ ์ฒดํฌํ•ด์•ผํ•˜๋Š” ๋ถˆ์ƒ์‚ฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ Xcode๋Š” instrument๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ƒํ™ฉ์„ ํ™•์ธํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์•„์ง ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
์—ฌ์ „ํžˆ ์ง€๊ธˆ ์งœ๊ณ ์žˆ๋Š” ์–ดํ”Œ์—์„œ๋„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค! ๐Ÿ˜ญ

0๊ฐœ์˜ ๋Œ“๊ธ€