์ด์ ์ Struct์ Class์ ๋ํ ๊ฐ๋ ๊ณผ ๋ ๊ฐ์ ์ฐจ์ด์ ์ ๋ํด์ ํฌ์คํ ํ๋ ์ ์ด ์๋ค. ์ค์ํํธ์ 'ใ ' ๋ ๋ชจ๋ฅผ ๋ ์ ๋ฆฌํ๋ ๊ธ์ด๋ผ ๋์ ํ ์ง๊ธ์์ ์๊ฐํ์๋ ๋์์ด ๋์ง ์...์๊ธฐ ๋๋ฌธ์ struct์ class์ ๋ํด์ ๋ค์ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค.
์ต๊ทผ์ SwiftUI๋ก ๋ง์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ Struct๋ฅผ ๋ง์ด ์ฌ์ฉํ์๋ค. ๊ทธ ์ด์ ์ ๋ํด์ ๋ฉํ ๋์ด "struct๋ ์ด๊ธฐํ๋ฅผ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ์ด ์ค์ด๋ค๊ณ , stack์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ณ๋ค" ๋ผ๊ณ ์ฅ์ ์ ๋ํด์ ๋ง์ํด์ฃผ์ จ๋ค. ์ด ๋ถ๋ถ์ ๋ํด์ ์์ธํ ์ดํด๋ฅผ ์ํด ํด๋น ํฌ์คํ ์ ๋ค์งํ๋ค.
์ฐ์ ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด "Class๋ ์ฐธ์กฐํ์ ์ด๊ณ , ARC๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅด ํ๋ค. Struct๋ ๊ฐํ์ ์ด๋ค."๋ผ๋๊ฒ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ด๋ค. ์ด๊ฒ ๊ณผ์ฐ ๊ฐ๋ฐ์์๊ฒ ์ด๋ค์๋ฏธ๊ฐ ์์์ง ๊ถ๊ธํด์ก๋ค. ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ SwiftUI๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด์ํ ์ ๋๋ก Struct๊ฐ ๋ง์ด ์ฐ์๊ธฐ ๋๋ฌธ์ ๋๋์ฒด ์ด๋ค ๋ถ๋ถ์์ ์ด๋ป๊ฒ class์ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋๊ฑด์ง๋ ๊ถ๊ธํด์ก๋ค.
๊ทธ๋ฐ ์๋ฏธ๋ก ๋ค์ํ๋ฒ ์ง๊ณ ๋์ด๊ฐ๋ณด๋ ค๊ณ ํ๋ค.
โถ๏ธ Struct(๊ตฌ์กฐ์ฒด) ์ Class์ ๊ณตํต์
- ๊ฐ์ ์ ์ฅํ ํ๋กํผํฐ๋ฅผ ์ ์ธํ ์ ์๋ค.
- ํฉ์์ ๊ธฐ๋ฅ์ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์๋ค.
- ๋ด๋ถ ๊ฐ์ . ์ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์๋ค.
- ์์ฑ์๋ฅผ ์ฌ์ฉํด ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค.
- extension์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค.
- Protocol์ ์ฑํํ์ฌ ๊ธฐ๋ฅ์ ์ค์ ํ ์ ์๋ค
๐ ์ฐจ์ด์
โถ๏ธ Struct(๊ตฌ์กฐ์ฒด)
- ๊ฐํ์ ์ด๋ค.
- ๊ตฌ์กฐ์ฒด ๋ณ์๋ฅผ ์๋ก์ด ๋ณ์์ ํ ๋นํ ๋๋ง๋ค ์๋ก์ด ๊ตฌ์กฐ์ฒด๊ฐ ํ ๋น๋๋ค.
์ฆ, ๊ฐ์ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ณ์์ ํ ๋นํ ๋ค ๊ฐ์ ๋ณ๊ฒฝ์ํค๋๋ผ๋ ๋ค๋ฅธ ๋ณ์์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
โถ๏ธ Class(ํด๋์ค)
- ์ฐธ์กฐํ์ ์ด๋ค.
- ARC๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
- ๊ฐ์ ํด๋์ค ์ธ์คํด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ณ์์ ํ ๋นํ ๋ค ๊ฐ์ ๋ณ๊ฒฝ์ํค๋ฉด, ํ ๋นํ ๋ชจ๋ ๋ณ์์ ์ํฅ์ ์ค๋ค.
- ์์์ด ๊ฐ๋ฅํ๋ค.
- ํ์ ์บ์คํ ์ ํตํด์ ํด๋์ค์ ์ธ์คํด์ค ํ์ ์ ํ์ธํ ์ ์๋ค.
- deinit์ ์ฌ์ฉํ์ฌ ํด๋์ค ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌํ ๋น์ ํด์ ํ ์ ์๋ค.
๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ด ๊ฐํ์ vs ์ฐธ์กฐํ์ ์ด๋ค. ์ด ์ฐจ์ด๋ฅผ ์์๋ณด๊ธฐ ์ํด ์ฝ๋๋ก ์ดํด๋ณด์.
์ด์ฒ๋ผ ํด๋์ค๋ ์ธ์คํด์ค์ ๊ฐ์ ํ ๋นํ๋๋ผ๋, ์ฐธ์กฐ๋ ํด๋์ค ๊ทธ ์์ฒด์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค. class์ count์ 3์ ํ ๋นํ๊ณ , class2 count์๋ 4๋ฅผ ํ ๋นํ๋ค. ๊ทธ๋ฌ๊ณ ์ถ๋ ฅํด๋ณด๋, ๋ค๋ฆ๊ฒ ํ ๋นํ 4๊ฐ ๋ชจ๋ class ์ธ์คํด์ค์ ๋ค์ด๊ฐ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ถ์ด์ ์๋ฌด๊ฐ๋ ํ ๋นํด์ฃผ์ง ์์๋ class3.count ์๋ 4๊ฐ ๋ค์ด์๋ค. ์ด๊ฒ ๋ฐ๋ก class์ ๊ฐ์ฅ ๋ํ์ ์ด ํน์ง์ธ ์ฐธ์กฐํ์ ์ด๋ผ๋ ๊ฒ์ด๋ค.
๋ฐ๋ฉด์ struct ๋ ์๋ก์ด๋ณ์์ ๊ตฌ์กฐ์ฒด๋ฅผ ํ ๋นํ์ฌ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด, ๋งค๋ฒ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋์ด ๋งค๋ฒ ์๋ก์ด ๊ตฌ์กฐ์ฒด๊ฐ ํ ๋น๋๋ค. ๊ทธ๋์ ๊ฐ์ ์๋์ฒ๋ผ ๋ณ๊ฒฝํด๋, ๊ทธ ์ธ์คํด์ค๋ง์ ๊ณ ์ ์ ๊ฐ์ ๊ฐ๋๋ค. --> ๊ฐํ์
๊ทธ๋ผ ์ฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ด์ผ๊ธฐ๊ฐ ๋์ค๋๋ฐ ๋๋์ฒด ARC๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค๋๊ฒ ๋ฌด์จ๋ป์ผ๊น
โถ๏ธ Class ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ : ARC
์ฐธ์กฐํ์ ์ ํ๋์ ์ธ์คํด์ค๊ฐ ์ฐธ์กฐ๋ฅผ ํตํด ์ฌ๋ฌ ๊ณณ์์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋์ง๊ฐ ์ค์ํ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. ์ ์ ํ ์์ ์ ์ธ์คํด์ค๊ฐ ํด์ ๋์ง ์์ผ๋ฉด ํ์ ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ญ๋นํ๊ฒ ๋๊ณ , ์ด๋ ์ฑ๋ฅ์ ํ๋ก ์ด์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
swift๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ์ธ ARC(Automatic Reference Counting)์ ์ฌ์ฉํ๋ค.
ARC๊ฐ ๊ด๋ฆฌํด์ฃผ๋ Reference Counting (์ฐธ์กฐ ํ์๋ฅผ ๊ณ์ฐํ๋ ๊ฑฐ)๋ ์ฐธ์กฐํ์ ์ธ ํด๋์ค์ ์ธ์คํด์ค์๋ง ์ ์ฉ๋๋ค. ๊ตฌ์กฐ์ฒด๋ enum์ ๊ฐํ์ ์ผ๋ก ๋ค๋ฅธ๊ณณ์์ ์ฐธ์กฐํ์ง ์๊ธฐ ๋๋ฌธ์ ARC๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค.]
ARC๋?
์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ๋ฐฉ์์ด๋ค. ์๋์ผ๋ก ๊ทธ๋ฅ ์๋ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํด์ ์ ๊ฒฝ์ ๋ ์ธ ์ ์๋ค.
โถ ์ธ์คํด์ค ์์ฑ
ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด ํด๋น ์ธ์คํด์ค์ ์ ๋ณด๋ HeapObject๋ผ๋ Struct๋ก ๊ด๋ฆฌ๋๋ค. ARC์ ๋ฉ์ปค๋์ฆ์ Swift Runtime์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ์ฑ๋์ด ์๋๋ฐ, Swift Runtime์ ๋์ ํ ๋น ๋๋ ๋ชจ๋ ๋ชจ๋ object๋ฅผ HeapObject๋ผ๋ struct๋ก ํํํ๋ค. ๋ํ HeapObject์์๋ Swift์์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๋ฐ์ดํฐ, ์ฆ reference count์ type meta data๋ฅผ ํฌํจํ๊ณ ์๋ค. heap ํ ๋น์ ๋ํด์๋ ์กฐ๊ธ๋ง ๋ฐ์์ ๋ค์ ์์๋ณด์.
โถ ์ธ์คํด์ค ํด์
ARC๋ ์ธ์จํด์ค๊ฐ ๋ ์ด์ ํ์ํ์ง ์๋ค๊ณ ์๊ฐ ๋๋ฉด ํด๋น ์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ์ํจ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ธ์คํด์ค๋ฅผ ํด์ ํ์ ๋, ํด๋น ์ธ์คํด์ค๋ฅผ ๋ค๋ฅธ๋ฐ์ ๋ ์ฌ์ฉํด์ผํ๋ค๋ฉด ์ธ์คํด์ค์ ํ๋กํผํฐ์ ํจ์์ ์ ๊ทผ์ด ๋ถ๊ฐํ๊ณ , ์ฑ์ด ์ฃฝ์ด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.
๋ฐ๋ผ์ ARC๋ ํด๋น ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ์ธ์คํด์ค์ ํ๋กํผํฐ๋ ๋ณ์, ์์ ๋ฑ์ ๊ฐ์๋ฅผ ์ธ๊ณ , ํด๋น ์ธ์คํด์ค์ ๋ํ ํ์ฑ ์ฐธ์กฐ๊ฐ 1๊ฐ ์ด์ ์กด์ฌํ๋ ํ ์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์์ ์ง ์๋๋ค.
๊ทธ๋ผ ์ด์ ์ฝ๋๋ฅผ ํตํด์ ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ดํดํด๋ณด์.
- line 42 ์์ ์ฐธ์กฐ ์นด์ดํธ๊ฐ 2๊ฐ ์ถ๋ ฅ๋๋ค. ์๋ ์ฐธ์กฐ ์นด์ดํธ๋ 2๊ฐ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- line 45 ์์๋ 3์ด ์ถ๋ ฅ๋๋ค. line 44 ์์ ํ๋ฒ ๋ ์ฐธ์กฐ๋ฅผ ํด์ฃผ์๊ธฐ ๋๋ฌธ์ +1์ด ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
- line 48 ์์๋ -1 ๋ 2๊ฐ ์ถ๋ ฅ๋๋ค. line 47 ์์ nil์ ์ฃผ์ด ์ฐธ์กฐํ๋๋ฅผ ํด์ ํด์ฃผ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ฐธ์กฐํด์ ๋ฅผ ํด์ฃผ์๋๋ ์ฐธ์กฐ์นด์ดํธ๊ฐ 1 ๊ฐ์ํ์ฌ ๋์ด์ ์ฐธ์กฐํ๋ ๊ณณ์ด ์์ผ๋ฏ๋ก deinit์ด ์คํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ์ง๋ง ์ด๋ฌํ ํน์ง ๋๋ฌธ์ retain Cycle์ด ๋ฐ์ํ๊ธฐ๋ ํ๋ค.
์ด ์ฝ๋์์ ๋ง์ง๋ง์ "ํ ๋นํด์ "๊ฐ ์ถ๋ ฅ๋์ง ์์๋ค. ๋ ์ด์ classA, classB์ ์ ๊ทผํ ๋ฐฉ๋ฒ์ด ์๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ์ฐธ์กฐ ์นด์ดํธ๊ฐ 0์ด ๋์ง ์์์ deinit์ด ์คํ๋์ง ์์ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ด๋ weak unowned ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํด๊ฒฐํ ์ ์๋ค๊ณ ํ๋ค. ๊ทธ๋ผ ์งค๋งํ๊ฒ ๋๋ง weak ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์.
line 114, 115๋ฅผ ๋ณด๋ฉด, ์ฐธ์กฐ๋ฅผ ํ๋ฒ ๋ ํด์ฃผ์๋๋ฐ๋ ์ฐธ์กฐ ์นด์ดํธ๊ฐ ์ฆ๊ฐํ์ง ์์๋ค. ์ด๋ weak์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ ์นด์ดํธ๊ฐ ์ฆ๊ฐํ์ง ์์ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ weak ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด retain cycle์ ๋ฐฉ์งํ ์ ์๋ค. ์ด๋ฌํ ํน์ง ๋๋ฌธ์ class์ struct ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค. ๊ตฌ์กฐ์ฒด๋ ์ธ์ ์๊ธฐ๊ณ , ์ฌ๋ผ์ง์ง ์ปดํ์ผ ๋จ๊ณ์์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ stack ๊ณต๊ฐ์ ํ ๋น๋๊ณ , ํด๋์ค๋ ์ฐธ์กฐ๊ฐ ์ด๋์ ์ด๋ป๊ฒ ๋ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ heap ์ด๋ผ๋ ๊ณต๊ฐ์ ํ ๋น๋๊ฒ ๋๋ค. ๊ทธ๋ผ ์ด์ stack ํ ๋น๊ณผ heap ํ ๋น์ ๋ํด์ ์์๋ณด์.
โถ stack ํ ๋น
stack ์ LIFO ํํ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค. (์ฐธ๊ณ ) ์๋ฃ๊ตฌ์กฐ ํน์ฑ์ ํ๋์ ๋ช ๋ น์ด๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น, ํด์ ํ ์ ์๋ค. ๋ ์ปดํ์ผ ๋จ๊ณ์์ ์ธ์ ์์ฑ๋๊ณ ์ธ์ ํด์ ๋๋์ง ์ ์ ์๋ ๊ตฌ์กฐ์ฒด์ ๊ฐ์ ๊ฐ๋ค์ด ์คํ์ ์ ์ฅ๋๊ฒ ๋๋ค.
์ค๋ ๋๋ค์ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ stack ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ํธ ๋ฐฐ์ ๋ฅผ ์ํ ์์์ด ํ์ํ์ง ์๋๋ค. ์ฆ, ์ค๋ ๋๋ก๋ถํฐ ์์ ํ๋ค๋ ๋ง์ด ๋๋ค. ์ด๋ฌํ ํน์ง ๋๋ฌธ์ stack ๊ฐ๋ค์ ์ฌ์ฉํ๋ ๊ฒ์ด heap ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅผ ์ ๋ฐ์ ์๋ค.
โถ heap ํ ๋น
heap ์์๋ ์ปดํ์ผ ๋จ๊ณ์์ ์์ฑ๊ณผ ํด์ ๋ฅผ ์์ ์๋ ์ฐธ์กฐ ํ์ ์ ๊ฐ์ฒด๊ฐ ํ ๋น๋๋ค.์ฆ, swift ์์๋ ํด๋์ค ๊ฐ์ฒด๊ฐ ํ์ ํ ๋น๋๋ค. heap์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ํด์ ๊ฐ ํ๋์ ๋ช ๋ น์ด๋ก ์ฒ๋ฆฌ๋์ง ์๊ธฐ ๋๋ฌธ์ stack ๋ณด๋ค ๊ด๋ฆฌํ๊ธฐ๊ฐ ํ๋ค๋ค. stack ์์๋ pop, push ๋ผ๋ ๋ช ๋ น์ด๋ก ๊ฐ์ ํ ๋น, ํด์ ํ ์ ์์ง๋ง, heap ์ ์ฐธ์กฐ ๊ณ์ฐ๋ ํด์ฃผ์ด์ผ ํ๋ฏ๋ก, ๋ณต์กํ๋ค.
๋ heap์ ์ค๋ ๋๊ฐ ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ์ง ์๋ค. ์ด๋ฅผ ๊ด๋ฆฌํด์ฃผ๊ธฐ ์ํ lock ๊ณผ ๊ฐ์ ์์๋ ํ์ํ๊ฒ ๋๊ณ , ์ด๋ ๊ณง ์ค๋ฒํค๋๋ก ์ด์ด์ง๊ฒ ๋๋ค.
์ด๋ ๊ฒ stackํ ๋น์ด๋, heapํ ๋น์ด๋์ ๋ฐ๋ผ ๊ฐ์ด ์ด๋์ ์ ์ฅ๋๋์ง์ ์ฐจ์ด๊ฐ ์๋ค.
๐ ๊ฐํ์ ์ Copy-on-assignment, Copy-on-write
์์์ struct์ ๊ฐ์ ๊ฐํ์ ์ ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ ํ ๋นํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณต์ฌ๋๋ค๊ณ ํ๋ค. ๊ทธ๋์ ์ฌ๋ฌ ์ธ์คํด์ค์ ๊ฐ์ ๋ฐ๊พธ์ด๋, ๊ทธ ์ธ์คํด์ค์๋ง ์ ์ฅ๋๋ค๊ณ .
์ด๋ ๊ฒ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ ๊ฐ์ ๋ณต์ฌํด์ ์ฐ๋ ๋ฐฉ์์ copy on assignment ๋ผ๊ณ ํ๋ค.
๋ฐ๋ฉด์ copy on write๋ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๊ธฐ ์ํด์๋ ์ผ๋จ ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋นํ์ง ์๊ณ , ๊ฐ์ ๊ณณ์ ๋ฐ๋ผ๋ณด๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋ฌ๋ค๊ฐ ํด๋น ๊ฐ์ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด ๊ทธ๋! ์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ณต์ฌํ๊ณ ๊ฐ์ ๋ณ๊ฒฝํ๋ค. swift ์์๋ Int, String, Double, Array, Set, Dictonary์์๋ง ์ฌ์ฉํ๊ณ ์๋ค.
๐ Struct, Class ์ธ์ ์ฌ์ฉํ๋?
์ง๊ธ๊น์ง ๋๊ฐ์ ์ฐจ์ด์ ๋ํด์ ์์๋ณด์๋ค. ๊ทธ๋ผ ์ธ์ ์ด๋ ์์ ์์ struct๋ฅผ ์ฌ์ฉํ๊ณ , class ๋ฅผ ์ฌ์ฉํด์ผํ ๊น?
- ๋จ์ํ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ณด์ ํ๊ธฐ ์ํด์๋ struct๋ฅผ ์ฐ๋๊ฒ ์ข๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ stack์ ํฌ๊ธฐ๊ฐ ํฌ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
- objective-C ์ ์ํธ ์ด์ฉ์ฑ์ ์ํ ๋๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค.
ํด๋น ๊ธ์ ํฌ์คํ ํ๊ณ ๊ณต๋ถํ๋ฉด์, ๋จ์ํ swift ๊ณต์ ๋ฌธ์์ ๋์์๋ ๋ด์ฉ๋ง ์ ์๊ณ ์๋ ๊ฐ๋ฐ์๊ฐ ์๋๋ผ, ์ด๋ป๊ฒ ํ๋ฉด ์ฑ๋ฅ๊ฐ์ ์ ํ ์ ์์์ง, ์ด๋ค ์ฝ๋๊ฐ ๋ ์ข์ ์ฝ๋์ผ์ง, ์ด๋ ์ํฉ์์ ์ด๋ค ์ฝ๋๋ฅผ ์ฌ์ฉํด์ผํ ์ง ์กฐ๊ธ ๋ ๊น๊ฒ ๊ณ ๋ฏผํ๋ ๊ฐ๋ฐ์๊ฐ ๋์ด์ผ ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๐ Reference