ARC๋ Automatic Reference Counting์ ์ค๋ง๋ก์จ, ์๋ ์ฐธ์กฐ ์นด์ดํธ๋ผ๋ ์๋ฏธ์ ๋๋ค.
Swift์์๋ ์ฑ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ARC๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์๋์ผ๋ก ์ฐธ์กฐ ํ์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ARC๊ฐ ์์์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์งํฉ๋๋ค**(Run time์ ๊ณ์ ์คํ๋๋ ๊ฒ์ด ์๋๋ผ Complie time(buildํ ๋)์ ์คํ).**
๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
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์ ์ฐจ์ด](