728x90
๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
Chapter 1. ์ค์ํํธ
1. ์ค์ํํธ๋?
- ARC (Automatic Reference Counting ์๋ ์ฐธ์กฐ ํ์ ๊ณ์ฐ) ์ง์ -๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฌ์
- ์ปดํ์ผ ์ธ์ด
- ํ๋ก๊ทธ๋จ์ ๋น๋, ์คํํ๋ ๊ณผ์ ๋ถํ์. ์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๋ค.
- ์ธ์ด์ ์์ ๋๊ฐ ๋๋ค
2. ์ค์ํํธ์ ์ธ์ด์ ํน์ง
- Safe - ์์ ํ ํ๋ก๊ทธ๋๋ฐ ์งํฅ <- ์๊ฒฉํ ๋ฌธ๋ฒ ์ ์ฉ
- Fast - ์ ์์ฑ
- Expression - ๋ ๋์ ํํ์ฑ
3. ์ค์ํํธ์ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์:
๊ณ์ฐ ๋ชจ๋ธ์ ๊ณต์ ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ํ ํน์ง์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ์ถ์ํ๋ ๊ฐ๋ .
์ปดํจํฐ๋ฅผ ์ฌ์ฉํด์ ํ์ด์ผ ํ ๋ฌธ์ ๊ฐ ์๊ณ ๊ทธ๊ฒ์ ํ๋ก๊ทธ๋จ์ผ๋ก์ ๊ธฐ์ ํ ๋, ๋ฌด์์ ์ฐฉ์ํด์ ๋ฌธ์ ๋ฅผ ์ ๋ฆฌํ๊ณ ๋ฌด์์ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ ๊ฒ์ธ๊ฐ ๋ฐ์์ ๋ํ ๋ฐฉํฅ์ ๋ถ์ฌํ๋ค.
์ค์ํํธ๋ ๋ค์ค ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ์ ํํ๊ฒ๋ ๋ช ๋ นํ๊ณผ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํ๋กํ ์ฝ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์งํฅํ๋ค.
์ฆ, ์ค์ํํธ์ ์ ๊ฐ์ฅ ๊ฐ์กฐํ๋ ๋ถ๋ถ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์๊ณผ ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋ค.
3.1 ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
ํค์๋: ๋ ๋ฆฝ์ ํด๋์ค ๊ฐ์ฒด ๋ฉ์๋
- '๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ' ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
- ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ๋ ๋จ์์ธ ๊ฐ์ฒด์ ๋ชจ์์ผ๋ก ํ์ ํ๊ณ ์ ํ๋ ์๊ฐ์ด๋ค.
- ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ์๋ก ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ํด๋์ค์ ํ๋์ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ๋ชจ์๋์ ๋ฐฉ์์ผ๋ก ์์ง๋ ฅ์ ๊ฐํํ๋ค. ๋ ๊ฐ ํด๋์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋๋๋ก ๋์์ธํด ๊ฒฐํฉ๋ ฅ์ ์ฝํํ๋ค. -> ์ํํธ์จ์ด์ ์ง ํฅ์ ๋ชฉ์
ํด๋์ค Class | ๋ฌธ์ ํด๊ฒฐ์ ์ํ(๊ฐ์ ์ข
๋ฅ์ ์ง๋จ์ ์ํ๋) ์์ฑ๊ณผ ํ์๋ฅผ ์ ์ํ ๊ฒ. ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๊ธฐ ์ํ ์ฒญ์ฌ์ง ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค ๋๋ ์ธ๋ถ ์์์ ๋ ๋ฆฝ์ ์ผ๋ก ๋์์ธํด์ผ ํ๋ค |
๊ฐ์ฒด Object | ํด๋์ค์ ์ธ์คํด์ค, ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ๋์ํ๋ ๋ชจ์์ ๊ฐ์ถ ๊ฒ. ๊ฐ์ฒด == ํด๋์ค์ ์ธ์คํด์ค ๊ฐ์ฒด != ์ธ์คํด์ค |
๋ฉ์๋ Method ๋๋ ๋ฉ์์ง Message | ๊ฐ์ฒด๊ฐ ํด๋์ค์ ์ ์๋ ํ์๋ฅผ ์ค์ง์ ์ผ๋ก ํ๋ ํจ์์ด๋ค. ๊ฐ์ฒด ๊ฐ์ ๋ช ๋ น ์ ๋ฌ ๋๋ ๋ฐ์ดํฐ ์ ๋ฌ์ ๋ฉ์๋(๋ฉ์์ง)๋ฅผ ํตํด ์ด๋ฃจ์ด ์ง๋ค. ์ด๋ฌํ ํ์๋ฅผ '๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.' ๋ผ๊ณ ํํํ๋ค. |
3.2 ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
ํค์๋: ํจ์ ํจ์์ ์กฐํฉ ๋ฐฐํ์ ์คํ ๋ณ๋ ฌ์ฒ๋ฆฌ ์ผ๊ธ ๊ฐ์ฒด
- ํจ์๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ์ฌ๊ณ ๋ฅผ ๋ฐฐ์ฐ๋ ๊ฒ
- ํ๋ก๊ทธ๋จ์ ์ํ ๋ณํ์์ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ์ ํจ์์ ์กฐํฉ์ผ๋ก ์๊ฐํ๋ ๋ฐฉ์์ ๋งํ๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํจ์๊ฐ ํน์ ๋์์ ์ํํ๋ ์ญํ ์ ๋ด๋นํ๋ ๊ฒ๊ณผ๋ ๋ฐ๋๋๋ ๊ฐ๋ ์ผ๋ก, ํจ์๋ฅผ ์ํํด๋ ํจ์ ์ธ๋ถ์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ์๋ค.
- ๋ฐ๋ผ์ ์ด๋ค ์ํฉ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ผ๋ ์ผ์ ํ๊ฒ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ ์ ์๋ค.
- ํจ์ ํธ์ถ์ด ๊ฐ๊ฐ ์ํธ ๊ฐ์ญ์์ด ๋ฐฐํ์ ์ผ๋ก ์คํ
- ๊ฐ์ : ๋๊ท๋ชจ ๋ณ๋ ฌ์ฒ๋ฆฌ
- ํจ์๋ฅผ ์ผ๊ธ๊ฐ์ฒด (First-class Citizen) ๋ก ๋ค๋ฃฌ๋ค. ๋ค์ํ ์ข
๋ฅ์ ํจ์๋ฅผ ํธ์ถ, ์ ๋ฌ, ๋ฐํ ๋ฑ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํ ๊ฐ๋ฅ
- ์ ๋ฌ์ธ์Argument๋ก ์ ๋ฌ ๊ฐ๋ฅ
- ๋์ ํ๋กํผํฐ ํ ๋น ๊ฐ๋ฅ
- ๋ณ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ๋ด์ ์ ์๋ค.
- ๋ฐํ ๊ฐ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ํ ๋นํ ๋ ์ฌ์ฉ๋ ์ด๋ฆ๊ณผ ๊ด๊ณ์์ด ๊ณ ์ ํ ๊ฐ์ฒด๋ก ๊ตฌ๋ณ ๊ฐ๋ฅ
๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ(์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ) | ํจ์ํ ํ๋ก๊ทธ๋๋ฐ | |
ํ๋ก๊ทธ๋จ์ด๋? | ๋ช ๋ น์ ์ํ | ํจ์์ ๊ณ์ฐ |
์ค์ ์ ์๊ฐ | How ์ด๋ป๊ฒ ์์ ์ํ ์๊ณ ๋ฆฌ์ฆ/ ์ํ ๋ณ๊ฒฝ ์ถ์ |
What ๋ฌด์์ ์ํ๋ ์ ๋ณด/ ํ์ํ ๋ณํ |
์ํ ๋ณ๊ฒฝ/ ์คํ ์์ | ์ค์/ ์ค์ | ์์/ ๋ฎ์ ์ค์๋ |
์ฃผ์ ํ๋ฆ ์ ์ด | ์ ์ด๊ตฌ๋ฌธ(๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ๋ฑ) ํจ์(๋ฉ์๋) ํธ์ถ |
์ฌ๊ท์ ๊ตฌ์กฐ ๋ฑ์ ํจ์ ํธ์ถ๋ก ์ ์ด |
์ฃผ์ ์กฐ์ ๋จ์ | ํด๋์ค๋ ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค | ํจ์ |
3.3 ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ
๊ณต๋ถ ์๋ฃ
์ผ๊ณฐ - ์ค์ํํธ ํ๋ก๊ทธ๋๋ฐ 5ํ (SWIFT5)
https://velog.io/@kyusung/ํจ์ํ-ํ๋ก๊ทธ๋๋ฐ-์์ฝ
๋ค์ด๋ฒ ์ฌ์ ๋๋ ๋ค๋ฅธ ์ฌ์
728x90
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ SWIFT ] ๋ฐ์ดํฐ ํ์ ๊ณ ๊ธ(3) - ์ด๊ฑฐํ (0) | 2021.07.30 |
---|---|
[ SWIFT ] ๋ฐ์ดํฐ ํ์ ๊ณ ๊ธ (2) - ์ปฌ๋ ์ ํ์ <๋ฐฐ์ด, ๋์ ๋๋ฆฌ, ์ธํธ> (0) | 2021.07.20 |
[ SWIFT ] ๋ฐ์ดํฐ ํ์ ๊ณ ๊ธ (1) (0) | 2021.07.19 |
[ SWIFIT ] ๋ฐ์ดํฐ ํ์ ๊ธฐ๋ณธ (0) | 2021.07.11 |
[ SWIFT ] ์ค์ํํธ ์ฒ์ ์์ํ๊ธฐ (0) | 2021.07.08 |