ํฐ์คํ ๋ฆฌ ๋ทฐ
[iOS/Swift] ๊ตฌ์กฐ์ฒด(struct)์ ํด๋์ค(class)์ ์ฐจ์ด ์์๋ณด๊ธฐ!
Neoguri๐ฆ 2022. 5. 29. 23:42
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค!
์ค๋์ swift์์ ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค!
๊ฐ์ฒด ์งํฅ์ ๊ณต๋ถํ๊ฑฐ๋ ๋ค๋ฅธ ์ธ์ด๋ค์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด class๋ struct์ ๋ํด ์์ฃผ ๋ณด์ จ์ ๊ฒ๋๋ค.
๊ทธ๋ผ swift์์๋ ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์์๋ณด๋๋ก ํ ๊ฒ์~~
๊ตฌ์กฐ์ฒด(Struct) ์ฌ์ฉ๋ฒ
struct๋ ์๋์ ๊ฐ์ด ์ ์ํฉ๋๋ค.
struct ๊ตฌ์กฐ์ฒด์ด๋ฆ {
// ํ๋กํผํฐ, ๋ฉ์๋
}
struct PersonInfo {
var name: String
var height: Int
}
struct ์ด๋ฆ์ ๋๋ฌธ์ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฆ์ ๋ง๋ค์ด ์ฃผ๊ณ
ํ๋กํผํฐ์ ๋ฉ์๋๋ ์๋ฌธ์ ์นด๋ฉ ์ผ์ด์ค๋ฅผ ํตํด ๋ง๋ค์ด ์ค๋๋ค.
์์๋ก PersonInfo๋ฅผ ๊ตฌ์กฐ์ฒด๋ก ๋ง๋ค์ด ๋ดค์ต๋๋ค.
์ ์๋ฅผ ๋ง์ณค์ผ๋ ์ธ์คํด์ค๋ฅผ ์์ฑํด ๋ด์ผ๊ฒ ์ฃ ?
์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค!
// PersonInfo ์ธ์คํด์ค ์์ฑ
var neoguri = PersonInfo(name: "neoguri", height: 300)
// ๊ตฌ์กฐ์ฒด ์ธ์คํด์ค ์ ๋ณด ์์
neoguri.name = "neogurios"
neoguri.height = 400
// let ์ฌ์ฉ์ผ๋ก ์์ ๋ถ๊ฐ
let neoguri = PersonInfo(name: "neoguri", height: 300)
// ๊ตฌ์กฐ์ฒด ์ธ์คํด์ค ์ ๋ณด ์์
neoguri.name = "neogurios"
neoguri.height = 400
ํด๋์ค(Class) ์ฌ์ฉ๋ฒ
class์ ์ฌ์ฉ๋ฐฉ๋ฒ์ struct์ ๊ฑฐ์ ์ ์ฌํด์
๋ฐ๋ก ์๋์ฒ๋ผ์
class PersonInfo {
var name: String = ""
var height: Int = 0
}
// ํด๋์ค ์ฌ์ฉ
var neguri: PersonInfo = PersonInfo()
neguri.name = "neoguri"
neguri.height = 300
let neoguri22: PersonInfo = PersonInfo()
neoguri22.name = "neoguri22"
neoguri22.height = 300
class๋ ์ธ์คํด์ค๋ฅผ ์ ์ธํ ๋ var์ ์ฌ์ฉํ๋ let์ ์ฌ์ฉํ๋ ๋ด๋ถ ํ๋กํผํฐ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
struct๋ ์๋์๋๋ฐ.. ์๊ทธ๋ด๊น์?
๊ทธ๊ฑด class์ struct์ ์ฐจ์ด์ธ๋ฐ ์๋์์ ํ์ธํด๋ณด๋๋ก ํ ๊ฒ์!
ํด๋์ค(Class)์ ๊ตฌ์กฐ์ฒด(Struct) ๋น๊ต
์์์ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ์ ํ์ธํ๊ฒ๊ณผ ๊ฐ์ด class์ struct์ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ด๋ณด์ฌ์..
๊ทธ๋ผ ๊ณตํต์ ๋ถํฐ ํ์ธํด ๋ณผ๊ฒ์!!
๊ณตํต์
- ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ํ๋กํผํฐ ์ ์
- ๊ธฐ๋ฅ ์ ๊ณต์ ์ํ ๋ฉ์๋ ์ ์
- ์๋ธ ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅ
- ์ด๊ธฐํ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ด๋์ ๋ผ์ด์ ์ ์
- ์ถ๊ฐ ๊ธฐ๋ฅ์ extension์ ์ด์ฉํ์ฌ ์ถ๊ฐ ๊ฐ๋ฅ
- ํน์ ๊ธฐ๋ฅ์ ์ํด protocol ์ค์ ๊ฐ๋ฅ
์ด๋ฐ์ ๋ค์ด ๊ณตํต์ ์ผ๋ก ์์ด์..
์ด๋ ค์ด ์ฉ์ด๋ ๋ง์๋ฐ์.. ์ด๋ฐ ์ฉ์ด๋ค์ ๋ค์์ ๋ ํ์ธํด ๋ณด๋๋ก ํ ๊ฒ์
๊ทธ๋ผ ๋ค๋ฅธ์ ์ ๋ญ๊น์?
์ฐจ์ด์
- ๊ตฌ์กฐ์ฒด๋ ์์ ๋ถ๊ฐ
- ํ์ ์บ์คํ ์ ํด๋์ค์ ์ธ์คํด์ค์๋ง ํ์ฉ
- deinitialize๋ ํด๋์ค์ ์ธ์คํด์ค์๋ง ํ์ฉ ๊ฐ๋ฅ
- ์ฐธ์กฐ ํ์ ๊ณ์ฐ(RC)๋ ํด๋์ค์ ์ธ์คํด์ค์๋ง ์ ์ฉ
- ํด๋์ค๋ ์ฐธ์กฐํ์ , ๊ตฌ์กฐ์ฒด๋ ๊ฐํ์
์ด๋ฐ ์ฐจ์ด์ ๋ค์ด ์๋๋ฐ์
๋ค ์ค์ํ์ง๋ง ๊ฐ์ ํ์ ์ด ๋ค๋ฅด๋ค๋ ๊ฒ๋๋ค.
ํด๋์ค๋ ์ฐธ์กฐํ์ ์ด๊ณ ๊ตฌ์กฐ์ฒด๋ ๊ฐํ์ ์ ๋๋ค.
๋ฌด์จ ์ฐจ์ด์ผ๊น์?
๊ฐํ์ ์ ๊ฐ์ ์ ๋ฌํ ๋ ๊ทธ ๊ฐ์ ๋ณต์ฌํด์ ์ ๋ฌํ๊ตฌ์
์ฐธ์กฐํ์ ์ ๊ฐ์ ์ ๋ฌํ ๋ ๊ฐ์ ๋ณต์ฌํ๋๊ฒ์ด ์๋ ์ฐธ์กฐ(์ฃผ์๊ฐ ์ ๋ฌ)๋ฅผ ํฉ๋๋ค.
์ดํดํ๊ธฐ ํ๋์์ฃ ?
์ฝ๋๋ก ๋ฐ๋ก ์์๋ณผ๊ฒ์!
๋จผ์ ๊ตฌ์กฐ์ฒด์ ๊ฐ ์ ๋ฌ ํ ์คํธ์ ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ณด์๋ฉด ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์
neoguri, neoguriCopy ์ธ์คํด์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ ๊ฐ์ง๋ ๊ฒ์ ์ ์ ์์ด์!
๊ทธ๋ผ ํด๋์ค๋ ์ด๋จ๊น์?
๊ธฐ์กด์ ์ธ์คํด์ค์ ๋ํด ๊ฐ์ ์์ ํ๊ณ ๊ทธ๊ฒ์ ์ฐธ์กฐํ๊ณ ์์ฃ .
๊ทธ๋์ ์์์ let์ ์ฌ์ฉํ๋๋ผ๋ class์ ์ธ์คํด์ค๊ฐ ์์ ์ด ๋์๋ ๊ฒ์ด์์!
๊ทธ๋ผ ์ด๋ฐ ์ฐจ์ด์ ๋ค์ด ์ด๋์์ ์ฌ์ฉ๋๊ณ ์์๊น์?
์ ํฌ๊ฐ ์๊ณ ์๋ String์ด๋ Bool๊ฐ์ด ๊ธฐ๋ณธ ํ์ ๋ค์ด ๋ชจ๋ struct๋ก ์ ์๋์ด ์์ด
๊ฐํ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์์ด์!
๊ทธ๋์ ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ค์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด์ฃ !!
๋น์ฐํ ์ฐ๋๊ฒ๋ค์ ์ด๋ ๊ฒ ํ์ธํด ๋ณด๋๊น ์ ๊ธฐํ๋ค์..ใ ใ
ํน์ ๊ธ์ค์ ์์ ์ฌํญ์ด๋ ํผ๋๋ฐฑ ์ฌํญ ์์ผ์๋ฉด ์๋ ค์ฃผ์๋ฉด ์ ๋ง ๋์์ด ๋ง์ด๋ ๊ฒ๊ฐ๋ค์ใ ใ
๊ธ ์ฝ์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!!!
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [iOS/Swift] ํ๋กํผํฐ(Properties) ์์๋ณด๊ธฐ(์ฐ์ฐ ํ๋กํผํฐ) - (2/3) (0) | 2022.06.01 |
|---|---|
| [iOS/Swift] ํ๋กํผํฐ(Properties) ์์๋ณด๊ธฐ(์ ์ฅ ํ๋กํผํฐ)-(1/3) (0) | 2022.05.30 |
| [iOS/Swift] Closure(ํด๋ก์ ) ์์๋ณด๊ธฐ (0) | 2022.05.27 |
| [iOS/Swift] Switch case ๋ฌธ ์์๋ณด๊ธฐ! (0) | 2022.05.26 |
| [iOS/Swift] Collection Type - Dictionary(๋์ ๋๋ฆฌ) (0) | 2022.05.25 |
- Total
- Today
- Yesterday
- autolayout
- swift ํ๋กํ ์ฝ
- RX
- RxSwift
- set
- ios
- ์ค์ํํธ
- func
- Swift Network
- ์ค์ํํธ ํ๋กํ ์ฝ
- ์ค์ํํธ map
- ์ค์ํํธ ๊ณต๋ถ
- ํ๋กํ ์ฝ
- Protocol
- swift urlsession
- ํ๋กํผํฐ
- xcode
- Unit Test
- network
- ์คํ ๋ ์ด์์
- ํ ์คํธ
- Clean
- ๊ณต๋ถ
- observable
- swift
- swift ๊ณต๋ถ
- XCTest
- Property
- URLSession
- test
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |