# ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ ํŒ€์› : BMO๐Ÿค–, Serena๐Ÿท ### ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ #### Q. ์ปดํ“จํ„ฐ์˜ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋Š” ์–ด๋–ค์–ด๋–ค ์˜์—ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„๊นŒ? ์ปดํ“จํ„ฐ์˜ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋ž€? - CPU์™€ ์ง์ ‘ ์ž๋ฃŒ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์น˜. - ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ต. - RAM / ROM๋กœ ๊ตฌ์„ฑ **RAM(Random Access Memory)** : ์ž„์‹œ ๊ธฐ์–ต ์žฅ์น˜. ์ฐพ๋Š” ์ž๋ฃŒ ์œ„์น˜๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐพ์•„๊ฐ€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์–ด๋А ํŠน์ • ์œ„์น˜์— ์ง์ ‘ ์ž๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. CPU๋ฅผ ๋„์™€ ๋ช…๋ น ์ฒ˜๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋ฉฐ, ์ปดํ“จํ„ฐ์˜ ํ™œ๋™์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•„์š”ํ•  ๋•Œ ๋น ๋ฅธ ์†๋„๋กœ ๊ธฐ์–ต์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณดํ†ต ๊ธฐ์–ต์žฅ์น˜์— ์žˆ๋Š” ์ฃผ๊ธฐ์–ต์žฅ์น˜, ํŠนํžˆ๋‚˜ RAM์„ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šด์˜์ฒด์ œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ๋ฐ์ดํ„ฐ ๋ฐ ๋ช…๋ น์–ด๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜์—ฌ ์ค€๋‹ค. **ROM(Read Only Memory)** : ์ฝ๊ธฐ ์ „์šฉ ๊ธฐ์–ต ์žฅ์น˜. ์ปดํ“จํ„ฐ์˜ ์ „์›์ด ๋Š์–ด์ ธ๋„ ๋‚ด์šฉ์ด ์œ ์ง€๋˜๋ฉฐ, ์ปดํ“จํ„ฐ ๊ธฐ๋ณธ ์šด์˜ ์ฒด์ œ ๊ธฐ๋Šฅ์ด๋‚˜ ์–ธ์–ดํ•ด์„์žฅ์น˜(interpreter)๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค. ๋‚ด์šฉ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ ๊ณ ์ณ์“ฐ๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. - ๋ฉ”๋ชจ๋ฆฌ๋Š” **์ฝ”๋“œ(code)**, **๋ฐ์ดํ„ฐ(data)**, **์Šคํƒ(stack)**, **ํž™(heap)** ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ![](https://hackmd.io/_uploads/Skb8MN4vn.png) **code ์˜์—ญ** : ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ `ํ•จ์ˆ˜๋“ค์˜ ์ฝ”๋“œ`๊ฐ€ CPU์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด ๋ช…๋ น ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„. ์ปดํŒŒ์ผ(compile) ํƒ€์ž„์— ๊ฒฐ์ •๋˜๊ณ  ์ค‘๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ฒŒ Read-Only ๋กœ ๋˜์–ด์žˆ๋‹ค. **data ์˜์—ญ** : ์ „์—ญ ๋ณ€์ˆ˜ ๋˜๋Š” static ๋ณ€์ˆ˜ ๋“ฑ `ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ`๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„. ์ „์—ญ ๋ณ€์ˆ˜ ๋˜๋Š” static ๊ฐ’์„ ์ฐธ์กฐํ•œ ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ์ด ์™„๋ฃŒ๋˜๋ฉด data ์˜์—ญ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๋„๋ก ๋ฐ”๋€๋‹ค. ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ ๋  ์ˆ˜๋„ ์žˆ์–ด Read-Write๋กœ ๋˜์–ด์žˆ๋‹ค. Swfit์˜ ๊ฒฝ์šฐ static์˜ ๊ธฐ๋ณธ ๋™์ž‘์ด lazy์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์ง€๋Š” ์•Š๊ณ  ๊ฐ’์— ์ ‘๊ทผํ• ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•œ๋‹ค. ![](https://hackmd.io/_uploads/B1ri54Vwn.png) **stack ์˜์—ญ** : ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์„ ๋งˆ์น˜๊ณ  ๋ณต๊ท€ํ•  ์ฃผ์†Œ ๋ฐ ๋ฐ์ดํ„ฐ(์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด๊ฐ’ ๋“ฑ)๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„. ์ด ์˜์—ญ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ๊ธฐ๋กํ•˜๊ณ  ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง„๋‹ค. stack์€ LIFO(Last In First Out) ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ฅธ๋‹ค. ์ปดํŒŒ์ผ ์‹œ stack ์˜์—ญ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ์ • ํ• ๋‹น ํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ํ˜ธ์ถœ๋˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•  ์ •๋„๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด `stack overflow`๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. -> Struct ์“ฐ๋ ˆ๋“œ๋ณ„๋กœ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ **heap ์˜์—ญ** : ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ. ์ž๋ฐ”์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ heap์˜์—ญ์— ์ƒ์„ฑ๋˜๊ณ  GC์— ์˜ํ•ด ์ •๋ฆฌ๋œ๋‹ค. Swift์—์„œ๋Š” ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฐ’์ด heap ์˜์—ญ์— ํ• ๋‹น๋˜๊ณ  ARC์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ•ด์ œ๋œ๋‹ค. heap ์˜์—ญ์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •๋˜๊ณ  ๋Ÿฐํƒ€์ž„๋•Œ ์‹คํ–‰๋œ๋‹ค. heap์€ ์ž์‹ ์˜ ์˜์—ญ ์™ธ๋กœ ํ™•์žฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด `heap Overflow`๋ผ๋Š” ๊ฒƒ์ด ๋ฐœ์ƒํ•œ๋‹ค. -> class ์“ฐ๋ ˆ๋“œ๋ผ๋ฆฌ ๊ณต์œ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ![](https://hackmd.io/_uploads/rJGcXVNvh.png) ### ARC #### Q. ARC๋Š” ๋ฌด์—‡์ธ๊ฐ€? `Automatic Reference Counting` : ๊ฐ์ฒด์™€ ๊ทธ์˜ ์—ฐ๊ด€๊ด€๊ณ„์˜ ๋ผ์ดํ”„ํƒ€์ž„ ์ˆ˜๋ช…์„ ๋ชจ๋ธ๋ง. Swift์—์„œ ์•ฑ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ. ์ž๋™์œผ๋กœ ์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ์“ธ ํ•„์š”๊ฐ€ ์—†๊ณ  ARC๊ฐ€ ์•Œ์•„์„œ ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ง€ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ช‡๋ช‡์˜ ๊ฒฝ์šฐ ARC์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์ฝ”๋“œ์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. ์ฐธ์กฐ ํšŸ์ˆ˜๋Š” ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์—๋งŒ ์ ์šฉ๋˜๊ณ  ๊ฐ’ ํƒ€์ž…์ธ ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. #### Q. ARC ์ด์ „์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์–ด๋• ์„๊นŒ? `MRC(Manual Reference Counting)`์œผ๋กœ ํž™์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ํ• ๋‹น/ํ•ด์ œ ํ•ด์ฃผ์—ˆ๋‹ค. ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด `retain`, ํ•ด์ œ๋ฅผ ์œ„ํ•ด `release` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. #### Q. ARC๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡๋ฌด์—‡์ด ์žˆ์„๊นŒ? ARC์˜ ์žฅ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ํŽธ์˜์„ฑ, ์•ˆ์ „์„ฑ ๋“ฑ์„ ๊ผฝ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ARC์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. 1. ํŽธ๋ฆฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ARC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ์ง์ ‘ ์ถ”์ ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ ํ•ด์ œํ•˜๋Š” ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ๋” ์•ˆ์ „ํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ARC๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ž‘์—…์— ๋” ์ง‘์ค‘ํ•  ํ•„์š” ์—†์ด ์ฝ”๋“œ ์ž‘์„ฑ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€ ARC๋Š” ๊ฐ์ฒด์˜ ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ์ถ”์ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹น ๋ฐ ํ•ด์ œํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ช…์‹œ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ณ„์†ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ํ˜„์ƒ์ด๋‹ค. ARC๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 3. ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ ๋ฐฉ์ง€ ARC๋Š” ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋™์•ˆ์—๋งŒ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ์ฐธ์กฐ๊ฐ€ ๋” ์ด์ƒ ์—†๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ๋Š” ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํฌ์ธํ„ฐ๋กœ, ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ •์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์ด๋‹ค. > ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ(dangling pointer) > ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํฌ์ธํ„ฐ #### Q. ์–ธ์ œ ๊ตฌ์กฐ์ฒด๋ฅผ ์„ ํƒํ•˜๊ณ  ์–ธ์ œ ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•ด์•ผํ• ๊นŒ? ๊ตฌ์กฐ์ฒด์— ๊ฐ’ ํƒ€์ž…, ํด๋ž˜์Šค๋Š” ์ฐธ์กฐํƒ€์ž…์ด๋‹ค. ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๊ตฌ์กฐ์ฒด๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ์ฐธ์กฐ ํƒ€์ž…์˜ ์˜๋„์น˜ ์•Š์€ ๊ณต์œ ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ฐธ์กฐ ํƒ€์ž…(Class)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ARC๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. > ์˜๋„์น˜ ์•Š์€ ๊ณต์œ  : ์ˆœํ™˜ ์ฐธ์กฐ, ์ด ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ๊ฐ’์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค. - ๊ฐ’ ํƒ€์ž… : Struct, Enum - ์ฐธ์กฐ ํƒ€์ž… : Class ### ๐Ÿ“š ์ฐธ๊ณ ๋งํฌ - [๐ŸŽ Apple Docs - ARC](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/automaticreferencecounting/) - [๐ŸŽ Apple Docs - Choosing Between Structures And Classes](https://developer.apple.com/documentation/swift/choosing-between-structures-and-classes) - [๐ŸŒ Blog - iOS ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ](https://babbab2.tistory.com/26) overHead????