Skip to content

Latest commit

ย 

History

History
42 lines (21 loc) ยท 2.89 KB

ARC.md

File metadata and controls

42 lines (21 loc) ยท 2.89 KB

ARC๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.


๋„์›€์„ ์ค€ ์ข‹์€ ์‚ฌ์ดํŠธ

Answer

ARC๋ž€ Automatic Reference Counting์˜ ์ค€๋ง๋กœ์จ, ์ž๋™ ์ฐธ์กฐ ์นด์šดํŠธ๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

Swift์—์„œ๋Š” ์•ฑ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ARC๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ž๋™์œผ๋กœ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ARC๊ฐ€ ์•Œ์•„์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ง€ํ•ฉ๋‹ˆ๋‹ค**(Run time์— ๊ณ„์† ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Complie time(buildํ•  ๋•Œ)์— ์‹คํ–‰).**

๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ ํšŸ์ˆ˜(Reference Counting)๋Š” ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์—๋งŒ ์ ์šฉ๋˜๋ฉฐ, ๊ฐ’ ํƒ€์ž…์ธ ๊ตฌ์กฐ์ฒด/์—ด๊ฑฐํ˜• ๋“ฑ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

WWDC2011์—์„œ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜์˜€์œผ๋ฉฐ, Obj-C๋Š” ARC์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(์‚ฌ์šฉ์•ˆํ•˜๋ฉด MRC์‚ฌ์šฉ) Swift์—์„œ๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

ARC๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ๋งํ–ˆ๋Š”๋ฐ, Data, Heap, Stack, Code ์ด๋ ‡๊ฒŒ 4๊ฐ€์ง€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ Heap ์˜์—ญ๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Heap ์˜์—ญ์€ class, closure ๋“ฑ **์ฐธ์กฐํ˜• ์ž๋ฃŒ(๋ ˆํผ๋Ÿฐ์Šค ํƒ€์ž…)**๋“ค์ด ๋จธ๋ฌด๋Š” ๊ณต๊ฐ„์ด์ž, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Retain Count๋Š” Heap์˜์—ญ์— ์ฐธ์กฐํ˜• ์ž๋ฃŒ๋“ค์ด ์–ผ๋งˆ๋‚˜ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ์นด์šดํŒ…๋˜๊ณ  ์ด์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ ์ œ๊ฑฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ์—ญํ• ์„ ์ˆ˜๋™์ ์œผ๋กœ ํ–ˆ๋˜๊ฒŒ MRC์ด๊ณ , ์ดํ›„ ๋“ฑ์žฅํ•œ ARC๋Š” ์ด๊ฒƒ๋“ค์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋” ๋‚˜์•„๊ฐ€๊ธฐ

ARC๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ์ผ์ด ์—†๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํ”„๋กœํผํ‹ฐ, ์ƒ์ˆ˜, ํ˜น์€ ๋ณ€์ˆ˜๊ฐ€ ๊ทธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ถ”์ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ARC์—์„œ๋Š” ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์ตœ์†Œ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ง€ ํ•˜์ง€ ์•Š๋Š”๋‹ค!

์ƒ๊ฐํ•ด๋ณด๊ธฐ

Run time์— ๊ณ„์† ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Complie time(buildํ•  ๋•Œ)์— ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•˜์˜€๋Š”๋ฐ ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๋™์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ๋“ค์˜ reference count๋ฅผ ์„ธ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

Answer: Retain Count๊ฐ€ ๋˜๋Š” ๋ฐฉ์‹

ARC ์™€ GC์˜ ์ฐจ์ด์ ?

Answer: [ํƒ€ ์–ธ์–ด์˜ GC์™€ Swift ARC์˜ ์ฐจ์ด](