1. heap๋ณด๋ค๋ stack์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น
- class๋ณด๋จ struct๋ enum์ ์ฌ์ฉํ๋ค. class๋ heapํ ๋น, struct๋ enum์ stackํ ๋น์ด๋ฏ๋ก
๋ฉ๋ชจ๋ฆฌ ํ ๋น
class: heap
struct: stack
enum: stack
- heap ⇒ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ฌ์ฉํ์ง ์์ ์์ญ์ ์ฐพ์ ํ ๋นํ๋ ๋ฐฉ์(๋์ ํ ๋น)์ด๋ฏ๋ก ์ข ๋ณต์กํจ (์๋๊ฐ ๋๋ฆผ)
stack ⇒ LIFO ๋ฐฉ์์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋จ์ํจ (์๋๊ฐ ๋น ๋ฆ, O(1))
2. ์ ์ ๋์คํจ์น(static Dispatch)๋ฅผ ์งํฅ
- ์ผ๋ฐ์ ์ผ๋ก swift์์๋ dynamic dispatch๋ฅผ ์ฌ์ฉํ๋๋ก ๋์ด์์
- ํด๋์ค(๋ฉ์๋, ํ๋กํผํฐ)๋ฅผ ์ ์ธํ ๋ ์์๋์ง ์๋ ํด๋์ค์ final์ ๋ถ์ด๋ฉด ์ฑ๋ฅ์ด ํฅ์๋จ
- ํด๋์ค๋ dynamic dispatch์ ์ฌ์ฉ ⇒ ์ค๋ฒ๋ผ์ด๋ฉ์ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ
- final์ ๋ถ์ด๋ฉด ์๋ธํด๋์ค๋ฅผ ๋ง๋ค์ง ์๋๋ค๋ ๊ฒ์ ๋ช ์์ ์ผ๋ก ํํ ๊ฐ๋ฅ
- final์ผ๋ก ์ ์ธ๋ ์์๋ค์ ์ง์ ํธ์ถ(๋ ๋น ๋ฆ), ๊ทธ๋ ์ง ์์ ์์๋ค์ vtable์ ํตํด ๊ฐ์ ํธ์ถ(๋ ๋๋ฆผ)
Static Dipatch(์ ์ ๋์คํจ์น)
- ์ปดํ์ผ ํ์์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ง ์ ํด์ง (๋ฏธ๋ฆฌ ์ ํด๋ )
- ์๋๊ฐ ๋น ๋ฆ
Dynamic Dispatch(๋์ ๋์คํจ์น)
- ๋ฐํ์์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ง ์ ํด์ง
- ์๋๊ฐ ๋๋ฆผ
- ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์ง๋ง ๋คํ์ฑ ๋๋ฌธ์ ์ฌ์ฉํจ
3. ํ์ผ ๋ด์์๋ง ์ ๊ทผํด๋ ๋๋ฉด private์ผ๋ก ์ ์ธ
- private๋ก ์ ์ธ์ ์ฐธ์กฐ ๊ฐ๋ฅํ ๋ฒ์๊ฐ ํ์ฌ์ ํ์ผ๋ก ์ ํ → ์ปดํ์ผ๋ฌ๋ ํ๋กํผํฐ์ ์ค๋ฒ๋ผ์ด๋ฉ ์ฌ๋ถ ํ๋จ
- ์ค๋ฒ๋ผ์ด๋ฉ์ด ์๋๋ค๋ฉด ์ปดํ์ผ๋ฌ๊ฐ final๋ก ์ถ๋ก → ์ ์ ๋์คํจ์น๋ก ๋์
'iOS > Interview Questions' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] struct, class, enum (0) | 2023.02.14 |
---|---|
[iOS] ์ฑ์ด foreground์ ์์ ๋์ background์ ์์ ๋ ์ด๋ค ์ ์ฝ์ฌํญ์ด ์๋๊ฐ? (0) | 2022.10.20 |
[iOS] @Main์ ๋ํด (0) | 2022.10.20 |
[iOS] ์ฑ์ด ์์ํ ๋ main.c ์ ์๋ UIApplicationMain ํจ์์ ์ํด์ ์์ฑ๋๋ ๊ฐ์ฒด (0) | 2022.10.13 |
[iOS] App thinning(์ฑ ์๋) ์ด๋? (0) | 2022.10.13 |