Class
- ํ๋กํผํฐ์ ๋ฉ์๋
Class ๋ฅผ ๊ฐ๋จํ ๋น์ ํ์๋ฉด ์ํ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ํ์๋ ๋ฐฅ์ ๋ด๋ ๊ณณ, ๊ตญ์ ๋ด๋ ๊ณณ, ๋ฐ์ฐฌ์ ๋ด๋ ๊ณณ์ด ์๋ ๊ฒ์ฒ๋ผ, Class ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๋ด์ ์ ์๋ ๊ณต๊ฐ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ํ๋กํผํฐ๋ ํด๋์ค ๋ด๋ถ์ ์ ์ธ๋ ๋ณ์๋ฅผ ์๋ฏธํ๊ณ ๋ฉ์๋๋ ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ์ฝ๋ฉํ๋ ๊ฒ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ํฉ๋๋ค. iOS UIKit Framework๋ ๋๋ถ๋ถ ํด๋์ค๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.
- ์ธ์คํด์ค
๊ทธ๋ฌ๋ฉด ์ด ํด๋์ค๋ฅผ ํธ์ถํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ํด๋์ค๋ฅผ ํธ์ถํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ฐ, ์ด๋ ์ด ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ํฉ๋๋ค.
์ด๋ ๊ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด ์ธ์คํด์ค๋ฅผ ํตํด ํ๋กํผํฐ์ ๋ฉ์๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋๋ค.
- ์์
์ด๋ ๊ฒ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค๋ก๋ถํฐ ์์ฑ์ ์์๋ฐ์ ์๋ ์์ต๋๋ค. ์ด๋ twin ์ me ์ ์์ ํด๋์ค(SubClass) ๊ฐ ๋๊ณ , me๋ twin์ ๋ถ๋ชจ ํด๋์ค(SuperClass)๊ฐ ๋ฉ๋๋ค. ์์๋ฐ์ง ์๋ ํด๋์ค๋ ๊ธฐ๋ฐํด๋์ค(BaseClass)๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ twin์ด๋ผ๋ ํด๋์ค๋ me๋ผ๋ ํด๋์ค๋ฅผ ๊ทธ๋๋ก ์์๋ฐ์, ๋๊ฐ์ ์์ฑ์ ๊ฐ์ง๋ฉด์ ์ถ๊ฐ๋ clothesColor๋ผ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๊ฐ ๋ฉ๋๋ค.
- ์ฌ์ ์
์๋ฅผ ๋ค์ด twin์ ์ธ์คํด์ค์ธ kate๊ฐ ๋ค๋ก๋ ๊ฑธ์ด๊ฐ๊ฒ ํ๊ณ ์์ผ๋ก๋ ๊ฑธ์ด๊ฐ๊ฒ ํ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น์? ๊ธฐ์กด ๋ฉ์๋๋ฅผ ์์ ํ๋ฉด
์ด๋ฐ ์ค๋ฅ๊ฐ ๋น๋๋ค. ๋ฐ๋ผ์ ์ด๋ ํ์ํ ๊ฒ์ด override ์ ๋๋ค.
์ฌ์ฉ๋ฒ์ ๋จ์ํฉ๋๋ค. ๋ฉ์๋ ์์ override๋ฅผ ์จ์ฃผ๋ฉด ๋ฉ๋๋ค. ์ด๋, ๋ถ๋ชจํด๋์ค์ ์์ฑ๋ ๊ทธ๋๋ก ์ ์งํ๊ณ ์ถ๋ค๋ฉด super.move()์ ๊ฐ์ด ๊ธฐ์กด ๋ฉ์๋ ์์ super๋ง ๋ถ์ฌ์ฃผ๋ฉด ๊ธฐ์กด์ "์์ผ๋ก ๊ฑธ์ด๊ฐ" ์ "๋ค๋ก ๊ฑธ์ด๊ฐ"๋ฅผ ๋์์ ์ํํ ์ ์์ต๋๋ค.
- initializer
๋ณ์๋ง ์ ์ธํด ๋๊ณ ์ด๊ธฐํ๋ฅผ ํ์ง ์์ผ๋ฉด, nil์ด ๋ฐ์ํด ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ฒ๋ผ ํด๋์ค์ ๊ตฌ์กฐ์ฒด ๋ชจ๋ ํ๋กํผํฐ์ ์ด๊ธฐํ๊ฐ ์ ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํด ์ฑ์ ๋น๋ํ ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ธฐํ๋ฅผ ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ, Class ์ ๋ฌ๋ฆฌ Struct๋ ํ๋กํผํฐ ๊ฐ์ ์ด๊ธฐํํ๋ ๊ตฌ๋ฌธ์ ์๋์ผ๋ก XCode์์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋์ Struct๋ณด๋ค๋ Class ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ์กฐ๊ธ ๋ ์ด๊ธฐํ์ ์ ๊ฒฝ์จ์ฃผ์ด์ผ ํฉ๋๋ค.
์ด๊ธฐํ๋ฅผ ํด์ฃผ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ, ์ฒซ ๋ฒ์งธ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋กํผํฐ๋ฅผ ์ ์ธํจ๊ณผ ๋์์ ์ด๊ธฐํ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ด๊ธฐํ ๋งค์๋ ๋ด์์ ํ๋กํผํฐ์ ์ด๊ธฐ๊ฐ์ ์ง์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Struct
๊ทธ๋ ๋ค๋ฉด struct๋ ๋ฌด์์ผ๊น์? ๊ตฌ์ฑ์ class ์ ๋น์ทํ์ง๋ง, ์์์ด ๋์ง ์๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ struct๋ ๊ฐ ํ์ ์ด์ง๋ง, class ๋ ์ฐธ์กฐํ์ ์ด๋ผ๋ ์ฐจ์ด์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ๋ํ ์ค๋ช ์ ํ๋ฐ๋ถ์์ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ ํ์ vs ์ฐธ์กฐ ํ์
์ผ๋ฐ์ ์ผ๋ก Class๋ ์ฐธ์กฐ ํ์ , Struct๋ ๊ฐ ํ์ ์ด๋ผ๊ณ ํ๋๋ฐ ์ด๋ค ์๋ฆฌ๋ก ์ด๋ ๊ฒ ๋๋ ๊ฑธ๊น์?
์ฝ๋์์ผ๋ก ๋ดค์ ๋๋ ๋ถ๋ช kate์ ํ๋กํผํฐ๋ง ๋ณ๊ฒฝ์ด ๋์๋๋ฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก ํธ์ถ๋ ๊ฐ์ ๋ณด๋ฉด sarah์ ํ๋กํผํฐ๋ ๋ณ๊ฒฝ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ Class๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ ๋ณด๊ฐ ์ ๋ฌ๋๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๊ณณ์ ๊ณตํต์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ kate์ ํ๋กํผํฐ๋ง ๋ณ๊ฒฝํ์์๋, ์ด ํ๋กํผํฐ๋ค์ ๋ ๋ฆฝ์ ์ด์ง ์์ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด sarah์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ต์ข ์ ์ผ๋ก๋ sarah์ ๊ฐ๋ ๋ณ๊ฒฝ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Struct์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ๋์ํ ๊น์?
Struct์ ๊ฒฝ์ฐ Class ์ ๋ฌ๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Kate์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ Sarah์ ๊ฐ์๋ ์ ํ ์ํฅ์ ์ฃผ์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ตฌ์กฐ์ฒด ์ธ์คํด์ค๋ฅผ ๋ ๋ค๋ฅธ ๋ณ์์ ๋์ ํ์ฌ๋, ์ด๋ ์ธ์คํด์ค์ ๋ณต์ฌ๋ก ์๋ก์ด ๊ฐ์ ํํ๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ์ธ์คํด์ค๊ฐ ๋ณ๊ฒฝ ๋์ด๋ ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
'iOS > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.07.20 ใ ฃ UICollectionViewController & Struct ๊ตฌ์กฐ์ฒด ํ์ฉ (0) | 2022.07.20 |
---|---|
22.07.18 - 19 ใ ฃ Enum CaseIterable & Table View (0) | 2022.07.19 |
22.07.12 ใ ฃ์ด๊ฑฐํ & ํจ์์ ๋ฐํ๊ฐ & Raw String (0) | 2022.07.12 |
22.07.06 ใ ฃ์ฑ์ ์๋ช ์ฃผ๊ธฐ & AppDelegate vs SceneDelegate & ๋คํฌ ๋ชจ๋ & UIWindow (0) | 2022.07.06 |
22.07.05 ใ ฃ UIKit Framework (0) | 2022.07.05 |