์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- APPJAM
- duno
- SOPT
- discardableResult
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- Til
- IOS
- dfs
- SwiftUI Tutorials
- SQL
- SwiftUI ํํ ๋ฆฌ์ผ
- GCD
- algorithm
- ๊ธฐ์ด๋ฌธ๋ฒ
- DynamicProgramming
- URLSession
- HAVIT
- ๊ณ ๋์ kit
- algoritm
- GroupBy
- SwiftUI
- ์ด์งํ์
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- Swift
- ๋์ ๊ณํ๋ฒ
- BFS
- concurrency
- 0์ด๋์ด์๋๊ธธ
- binarySearch
- Today
- Total
suvera-dev ๐ฅฆ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ Swift - ์ ๊ทผ์ ์ด ๋ณธ๋ฌธ
์ ๋ฒ ํฌ์คํ ์์ ๊ตฌ์กฐ์ฒด, ํด๋์ค, ํ๋กํผํฐ, ๋ฉ์๋์ ๋ํด ์ง์ด๋ดค๋๋ฐ์.
์ด๋ฒ ํฌ์คํ ์์๋ ์ ๊ทผ์ ์ด์ ๋ํด ์ ๋ฆฌํด๋ดค์ต๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์์ ์ค์ํ ๋ด์ฉ ์ค์ '์๋ํ'๋ผ๋ ๊ฐ๋ ์ด ์์ต๋๋ค.
์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ํต์ฌ ๊ธฐ๋ฅ์ธ ์ ๊ทผ์ ์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ ๊ทผ์ ์ด
- ์ฝ๋๋ผ๋ฆฌ ์ํธ์์ฉ์ ํ ๋ ํ์ผ ๊ฐ ๋๋ ๋ชจ๋ ๊ฐ์ ์ ๊ทผ์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ.
- ์ ๊ทผ์ ์ด๋ฅผ ํตํด ์ฝ๋์ ์์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต.
์ ๊ทผ์ ์ด๊ฐ ์ ํ์ํ ๊น?
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์์ ์ค์ํ ์บก์ํ์ ์๋ํ๋ฅผ ๊ตฌํํ๋ ์ด์ ๋ ์ธ๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์๋๋ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ.
- ๋ถํ์ํ ์ ๊ทผ์ผ๋ก ์๋์น ์์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๊ฑฐ๋ ๊ผญ ํ์ํ ๋ถ๋ถ๋ง ์ ๊ณตํด์ผํ๋๋ฐ ์ ์ฒด ์ฝ๋๊ฐ ๋ ธ์ถ๋ ๊ฐ๋ฅ์ฑ์ด ์์ ๋ ์ ๊ทผ์ ์ด๋ฅผ ์ด์ฉํฉ๋๋ค !
โ๏ธ
์ต๊ทผ์ ํ๋ ํ๋ก์ ํธ์์ ๋ชจ๋ํ๋ฅผ ์ ์ฉํ๋๋ฐ์.
์ ๊ทผ์ ์ด์ ๊ด๋ จ๋ ์ฌ๋ฌ ์ด์๋ค์ด ์์์ต๋๋ค.
ํ๋์ ์ฑ์ด ์ฌ๋ฌ ๋ชจ๋๋ก ๋๋์ด์ ธ ์๋ค๋ณด๋๊น,
๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๋์ง ๋ฏธ๋ฆฌ ํ๋จํ๊ณ
์ ๊ทผ์ ์ด ํค์๋๋ฅผ ์ ์ ํ ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
๋ชจ๋ํ๋ฅผ ์ ์ฉํด๋ณด์ค ์๊ฐ์ด๋ผ๋ฉด,
์ ๊ทผ์ ์ด๋ ์์ฃผ ์ค์ํ ๊ฐ๋ ์ด๋ผ๋ ์๊ฐ์ด ๋๋ค์ !
๋ชจ๋๊ณผ ์์คํ์ผ
- ์ค์ํํธ์ ์ ๊ทผ์ ์ด๋ ๋ชจ๋๊ณผ ์์คํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์๋๋ฐ์ !
๋ชจ๋
- ๋ฐฐํฌํ ์ฝ๋์ ๋ฌถ์ ๋จ์
- ํต์ ํ๋์ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ .
- import ํค์๋๋ฅผ ์ฌ์ฉํด ๋ถ๋ฌ์ต๋๋ค.
์์คํ์ผ
- ํ๋์ ์ค์ํํธ ์์ค ์ฝ๋ ํ์ผ
- ์๋ฐ๋ ์ต์ ์จ ๊ฐ์ ๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ํต์ ํ์ผ ํ๋์ ํ์ ์ ํ๋๋ง ์ ์ํฉ๋๋ค.
- ์ค์ํํธ์์๋ ๊ทธ๋ ๊ธดํ์ง๋ง, ๋๋ก๋ ใ ์คํ์ผ ํ๋์ ์ฌ๋ฌํ์ ์ด๋ ํจ์ ๋ฑ ๋ง์ ๊ฒ๋ค์ ์ ์/ ๊ตฌํ ํ ์ ์์ด์.
์ ๊ทผ ์์ค Access Level
- ์ ๊ทผ์ ์ด๋ Access Level ํค์๋๋ฅผ ํตํด ๊ตฌํํ ์ ์์ต๋๋ค.
- open, public, internal, fileprivate, private 5๊ฐ์ง๊ฐ ์์ต๋๋ค !
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋๊ณผ ์์คํ์ผ์ ๋ฐ๋ผ ๊ตฌ๋ถํฉ๋๋ค.
- ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ ์ดํด๊ฐ ์๋ฉ๋๋ค !
- private์์ open์ผ๋ก ๊ฐ์๋ก ๋น์ฐํ ์ ๊ทผ๋๊ฐ ๋๊ฒ ์ฃ .
- ๊ธฐ๋ฅ ์ ์ ๋ด๋ถ๋ถํฐ ๋ชจ๋ ์ธ๋ถ๊น์ง ์ ๊ทผ ๋ฒ์๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
1) public - ๊ณต๊ฐ ์ ๊ทผ ์์ค
- ์์ ์ด ๊ตฌํ๋ ์์คํ์ผ, ์์คํ์ผ์ด ์ํด ์๋ ๋ชจ๋, ๋ชจ๋์ ๊ฐ์ ธ๋ค ์ฐ๋ ๋ชจ๋ ๋ฑ ๋ชจ๋ ๊ณณ์์ ์ฌ์ฉ ๊ฐ๋ฅ.
- ์ฃผ๋ก ํ๋ ์์ํฌ์์ ์ธ๋ถ์ ์ฐ๊ฒฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋๋ฐ ์ฐ์.
2) open - ๊ฐ๋ฐฉ ์ ๊ทผ ์์ค
- public ์ด์์ผ๋ก ๋์ ์ ๊ทผ ์์ค.
- ํด๋์ค์ ํด๋์ค์ ๋ฉค๋ฒ์์๋ง ์ฌ์ฉ๊ฐ๋ฅ.
- public์ด๋ ๋ญ ์ฐจ์ด ? open ํด๋์ค๋ ๊ทธ ํด๋์ค๊ฐ ์ ์๋ ๋ชจ๋ ๋ฐ์ ๋ค๋ฅธ ๋ชจ๋์์๋ ์์ํ ์ ์๊ณ , open ํด๋์ค ๋ฉค๋ฒ๋ ํด๋น ๋ฉค๋ฒ๊ฐ ์ ์๋ ๋ชจ๋ ๋ฐ์ ๋ค๋ฅธ ๋ชจ๋์์๋ ์ฌ์ ์ ํ ์ ์์.
- open ์์ค์ ํด๋์ค๋ ๊ทธ ํด๋์ค๋ฅผ ๋ค๋ฅธ ๋ชจ๋์์๋ ๋ถ๋ชจํด๋์ค๋ก ์ฌ์ฉํ๊ฒ ๋ค๋ ๋ชฉ์ ์ผ๋ก ํด๋์ค๋ฅผ ์ค๊ณํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ์์ ์๋ฏธ.
3) internal - ๋ด๋ถ ์ ๊ทผ ์์ค
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์์์ ์๋ฌต์ ์ผ๋ก ์ง์ ํ๋ ๊ธฐ๋ณธ ์ ๊ทผ ์์ค
- ์์คํ์ผ ์ํด ์๋ ๋ชจ๋ ์ด๋์์๋ ์ฐ์ผ ์ ์๋ค.
- ๋ค๋ง ๊ทธ ๋ชจ๋์ ๊ฐ์ ธ๋ค ์ฐ๋ ์ธ๋ถ ๋ชจ๋์์๋ ์ ๊ทผํ ์ ์๋ค.
- ์ธ๋ถ์์ ์ฌ์ฉํ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด๊ฐ ์๋๋ฉฐ, ๋ชจ๋ ๋ด๋ถ์์ ๊ด์ญ์ ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฐ์ ๋๋ค.
4) fileprivate - ํ์ผ์ธ๋ถ๋น๊ณต๊ฐ ์ ๊ทผ ์์ค
- ๊ทธ ์์๊ฐ ๊ตฌํ๋ ์์คํ์ผ ๋ด๋ถ์์๋ง ์ฌ์ฉํ ์ ์๋ค.
- ํด๋น ์์คํ์ผ ์ธ๋ถ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ถ์์ฉ์ด ์๊ธธ ์ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ.
5) private - ๋น๊ณต๊ฐ ์ ๊ทผ ์์ค
- ๊ฐ์ฅ ํ์ ์ ์ธ ๋ฒ์
- ๊ทธ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ๊ตฌํํ ๋ฒ์ ๋ด์์๋ง ์ฌ์ฉํ ์ ์์.
- ๊ฐ์ ์์คํ์ผ ์์ ๊ตฌํํ ๋ค๋ฅธ ํ์ ์ด๋ ๊ธฐ๋ฅ์์๋ ์ฌ์ฉํ ์ ์์
์ ๊ทผ์ ์ด ๊ตฌํ ์ฃผ์์ฌํญ
- ์์ ์์๋ณด๋ค ํ์ ์์๊ฐ ๋ ๋์ ์ ๊ทผ ์์ค์ ๊ฐ์ง ์ ์๋ค !
- ๊ตฌ์กฐ์ฒด ๋ด๋ถ์ ๋ ๋์ ์ ๊ทผ ์์ค์ ๊ฐ๋ ํ๋กํผํฐ๋ฅผ ์ ์ํ๋ค๊ฑฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ํน์ ํ์ ์ด ์ ๋ฌ๋๊ฑฐ๋ ๋ฐํ๋๋ค๋ฉด, ๊ทธ ํ์ ์ ์ ๊ทผ ์์ค๋ณด๋ค ํจ์์ ์ ๊ทผ ์์ค์ด ๋๊ฒ ์ค์ ๋ ์ ์์.
- ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค๋๋ ๋ค๋ฅธ ๋ชจ๋์์ ํน์ ๊ธฐ๋ฅ์ ์ ๊ทผํ ์ ์๋๋ก API๋ก ์ฌ์ฉํ ๊ธฐ๋ฅ์ public์ผ๋ก ์ง์ ํด์ฃผ์ด์ผ ํจ.
- ๊ทธ ์ธ์ ์์๋ internal ํน์ private์ผ๋ก
- enum ๋ด๋ถ์ case ๋ณ๋ก ์ ๊ทผ์์ค ๋ถ์ฌํ ์ ์์.
- enum์ ์์๊ฐ ํ์ ์ผ๋ก ๋ฎ์ ์ ๊ทผ์์ค์ ํ์ ์ด ์ฌ์ ์์.
์ฝ๊ธฐ ์ ์ฉ ๊ตฌํ
- ๊ตฌ์กฐ์ฒด ๋๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ ํ๋กํผํฐ๋ฅผ ๊ตฌํํ ๋๋ ํ์ฉ๋ ์ ๊ทผ ์์ค์์ ํ๋กํผํฐ ๊ฐ์ ๊ฐ์ ธ๊ฐ ์ ์์.
- ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด ? ์๋ธ์คํฌ๋ฆฝํธ๋ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๋๋ก ์ ํํ๋ ค๋ฉด ?
= ์ค์ ์๋ง ๋ ๋ฎ์ ์ ๊ทผ ์์ค์ ๊ฐ๋๋ก ์ ํํ ์ ์๋ค. ์์์ ์ ๊ทผ ์์ค ํค์๋ ๋ค์ (set)์ ๋ถ์ฌ ํํ.
public struct SomeType {
// ๋น๊ณต๊ฐ ์ ๊ทผ์์ค ์ ์ฅ ํ๋กํผํฐ count
private var count: Int = 0
// ๊ณต๊ฐ ์ ๊ทผ์์ค ์ ์ฅ ํ๋กํผํฐ publicStoredProperty
public var publicStoredProperty: Int = 0
// ๊ณต๊ฐ ์ ๊ทผ์์ค ์ ์ฅ ํ๋กํผํฐ publicGetOnlyStoredProperty
// ์ค์ ์๋ ๋น๊ณต๊ฐ ์ ๊ทผ์์ค
public private(set) var publicGetOnlyStoredProperty: Int = 0
// ๋ด๋ถ ์ ๊ทผ์์ค ์ ์ฅ ํ๋กํผํฐ internalComputedProperty
internal var internalComputedProperty: Int {
get {
return count
}
set {
count += 1
}
}
// ๋ด๋ถ ์ ๊ทผ์์ค ์ ์ฅ ํ๋กํผํฐ internalGetOnlyComputedProperty
// ์ค์ ์๋ ๋น๊ณต๊ฐ ์ ๊ทผ์์ค
internal private(set) var internalGetOnlyComputedProperty: Int {
get {
return count
}
set {
count += 1
}
}
// ๊ณต๊ฐ ์ ๊ทผ์์ค ์๋ธ์คํฌ๋ฆฝํธ
public subscript() -> Int {
get {
return count
}
set {
count += 1
}
}
// ๊ณต๊ฐ ์ ๊ทผ์์ค ์๋ธ์คํฌ๋ฆฝํธ
// ์ค์ ์๋ ๋ด๋ถ ์ ๊ทผ์์ค
public internal(set) subscript(some: Int) -> Int {
get {
return count
}
set {
count += 1
}
}
}
var someInstance: SomeType = SomeType()
// ์ธ๋ถ์์ ์ ๊ทผ์, ์ค์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.publicStoredProperty) // 0
someInstance.publicStoredProperty = 100
// ์ธ๋ถ์์ ์ ๊ทผ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.publicGetOnlyStoredProperty) // 0
//someInstance.publicGetOnlyStoredProperty = 100 // ์ค๋ฅ ๋ฐ์
// ์ธ๋ถ์์ ์ ๊ทผ์, ์ค์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.internalComputedProperty) // 0
someInstance.internalComputedProperty = 100
// ์ธ๋ถ์์ ์ ๊ทผ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance.internalGetOnlyComputedProperty) // 1
//someInstance.internalGetOnlyComputedProperty = 100 // ์ค๋ฅ ๋ฐ์
// ์ธ๋ถ์์ ์ ๊ทผ์, ์ค์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance[]) // 1
someInstance[] = 100
// ์ธ๋ถ์์ ์ ๊ทผ์๋ง, ๊ฐ์ ๋ชจ๋ ๋ด์์๋ ์ค์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
print(someInstance[0]) // 2
someInstance[0] = 100
์ถ์ฒ : ์ผ๊ณฐ๋์ Swift ํ๋ก๊ทธ๋๋ฐ ์ฑ
'Language > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ Swift - Struct, Class, Property, Method (0) | 2023.03.30 |
---|---|
Swift) SOLID ์์น in Swift (4) | 2022.04.14 |
Swift) ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ (4) | 2022.04.03 |
Swift ) ๊ธฐ์ด ๋ฌธ๋ฒ 6์ผ์ฐจ - Class ์ Struct (2) | 2022.02.10 |
Swift ) Closure (0) | 2022.02.09 |