- μνμ μνμλ€μ΄ κ³ κ°μ μ 무μ λ°λ₯Έ μΌμ λμμ μ²λ¦¬νλ μ±μ λλ€.
Baem | bella |
---|---|
@Dylan-Yoon | @hyhy0429 |
[STEP-1]
- 221101
- CocoaPodμ μ΄μ©ν SwiftLint λΌμ΄λΈλ¬λ¦¬ μ€μΉ
- Node νμΌ μμ± λ° κ΅¬ν
- LinkedList νμΌ μμ±κ³Ό νλ‘νΌν° λ° λ©μλ ꡬν
- LinkedList UnitTest ꡬν
[STEP-2]
- 221102
- Bank νμΌ μμ± λ° νμ λ΄λΆ λ©μλ ꡬν
- Customer νμΌ μμ±
- Bank νμ λ΄λΆ λ©μλ κΈ°λ₯ λΆλ¦¬
- μ κ·Όμ μ΄μ μ€μ
[STEP-3]
- 221107
- Task νμΌ μμ± λ° Customer νμ νλ‘νΌν° μΆκ°
- Bankmanger νμ ꡬν
- Bank νμ λ΄λΆ κ³ κ° λκΈ°μ΄ κ΅¬λΆ λ° λλ€νκ² μ 무 λΆλ°°νλ λ©μλ μΆκ°
- Bankmanager νμ λ΄λΆ task() ꡬν
- Bankmanager νμ classλ‘ λ³κ²½ λ° μκ°/κ³ κ°μ νλ‘νΌν°μ λ©μλ ꡬν
- Bank νμ λ΄λΆ μ 무 λ§μΉλ λ©μλ ꡬν
- Bank νμ λ΄λΆ μΌμ μμ λ©μλμ DispatchQueueμ λμ§λ λ©μλ κΈ°λ₯ λΆλ¦¬
- 221110
- BankTypeμ κ³ κ°μ°½κ΅¬λ₯Ό Task νμ μ νλ‘νΌν°λ‘ κ΄λ¦¬νλλ‘ κ΅¬ν
- Bank νμ λ΄λΆ μ 무 κ΄λ ¨ λ©μλλ₯Ό BankManager νμ λ΄λΆλ‘ μ΄λ
- Bank νμ λ΄λΆ dispatchTask() μκ°κ³μ° μ€λ₯ μμ
- 221111
- Readme μμ±
STEP 1, 2 | STEP 3 |
---|---|
-
Swift Package Manager(SPM)
- μ²μ
SwiftLint λΌμ΄λΈλ¬λ¦¬
λ₯Ό μ¬μ©νκΈ° μν μμ‘΄μ±κ΄λ¦¬λꡬ μ€CocoaPod
κ³ΌSPM
μ κ³ λ―Όνκ² λμκ³ , μ νμμ μ§μ μ 곡νλ€λ μ λ° νΈλ¦¬νλ€λ μ μμSPM
μ μ ννμ¬ μ¬μ©νλ €κ³ νμ΅λλ€. - SPMμ μ΄μ©ν μ€μΉ κ³Όμ μμ, μ²μμλ Xcodeμ [File -> Add Package]μμ μ€μΉλ§ νλ©΄ λλ κ²μΌλ‘ μκ³ μμμΌλ,
SwiftLint
λ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μ²λΌ SPMμ μ§μνλ κ²μ΄ μλμμΌλ©° μ¬μ©μ μν΄μλbrew
λ₯Ό ν΅ν΄swiftLint
λ₯Ό μΈμ€ν¨ ν λ€ νλ‘μ νΈμ μ μ© ν swiftlint.yml νμΌμ μμ± ν΄μΌ νμ΅λλ€.
- μ²μ
-
CocoaPod
-
- SwiftLint githubμ
μ€μΉ
μ κ΄λ ¨λ λΆλΆμ μ΄ν΄λ³΄λ,SPM
μ΄ μλCocoaPod
μ¬μ©μ κΆμ₯νκ³ μλ κ²μ μκ² λμ΄ λ³κ²½νκ² λμμ΅λλ€.
-
- μ²μμλ LinkedListλ‘ λ§λ νλ₯Ό νμ©νμ¬,
μκΈ ν
λμΆ ν
λ₯Ό λ°λ‘ λ§λ€κ³ μ νμμ΅λλ€. κ·Έλ¬λ, Bank νμ λ΄λΆμ μκΈ λ§€λμ 2λͺ κ³Ό λμΆ λ§€λμ 1λͺ μ μμ±νμμ΅λλ€. μκΈ λ§€λμ 1κ³Ό λμΆλ§€λμ 1μκ² κ° κ³ κ° λκΈ°μ΄μμ κ³ κ°μ κΊΌλ΄ μΌμ ν λΉνλ κ²μ΄ κ°λ₯νμΌλ, μκΈ κ³ κ°λκΈ°μ΄μ μκΈλ§€λμ 1 λΏλ§ μλλΌ μκΈλ§€λμ 2μκ²λ ν λΉνλ κ²μλ μ€ν¨νκ²λμμ΅λλ€. κ³ λ―Όμ νλ€κ°, μ 무μ²λ¦¬λ₯Ό 맀λμ κ°μ²΄λ₯Ό μμ±ν΄μ λΆλ΄νλ κ²μ΄ μλ μ€λ λμ κ°λ μμ μ²λ¦¬νλ κ²μΌλ‘ λ³κ²½νμ΅λλ€.
- μμ κ³Όμ μ κΈ°μ¬λ κ²κ³Ό κ°μ΄, μ
무μ²λ¦¬λ₯Ό μ€λ λμ κ°λ
μμ μ²λ¦¬νκ³ μ νλ ꡬνκ³Όμ μμ, κ° μ
무λ₯Ό
global.async
λ₯Ό μ΄μ©νμ¬ λ³΄λΌ κ²½μ°μ, λλ€νκ² μμ±ν κ³ κ° μ λ§νΌ(νμν λ§νΌ) μ°λ λλ₯Ό μμ±νκ² λμμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄,DispatchSemaphore
μSerialQueue
λ κ°μ§ λ°©λ² μ€μ κ³ λ―Όνκ² λμμΌλ©° μκΈ μ 무μ λμΆ μ 무λ₯Ό μ²λ¦¬νλ μ€λ λμ κ°μλ₯Ό μ ννκ³ μDispatchSemaphore
μvalue
λ₯Ό μ΄μ©νμ¬ μ§μ νμμ΅λλ€.
struct Bankmanager
μ νμ μ΄ StructμΌ λ,Bank
μ DispatchQueue μμ μ¬μ©νλ©΄ μ¬μ©νκ³ μ νλ κ°μ΄ μ΄λ―Έ μΊ‘μ³κ° λμ΄μμ΄ λ³κ²½μ΄ λΆκ°νκΈ°μ μμ κ°μ μ€λ₯κ° λ°μνκ² λμμ΅λλ€.- μΊ‘μ³λ 리μ€νΈλ₯Ό νμ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νκ³ μ νμμΌλ, μΊ‘μ³λ 리μ€νΈ μμ κ° λ³κ²½μ λΆκ°νμκΈ°μ μ°Έμ‘°νμ μ΄ μλ κ°νμ μΌλ‘ λ°κΎΈμ΄ λ¬Έμ λ₯Ό ν΄κ²°νμμ΅λλ€.
- μ²μ μ€κ³ μμλ, μκΈ λκΈ°μ΄κ³Ό λμΆ λκΈ°μ΄μ λ§λ€κ³ μκΈ λ΄λΉ μνμ(2), λμΆ λ΄λΉ μνμ(1) λ° μν창ꡬμ κ°λ
μ΄ λ΄κΈ΄ κ°μ²΄λ₯Ό μμ±νμ¬ μ
무λ₯Ό ν λΉνκ³ μ νμμ΅λλ€.
κ·Έλ¬λ, νλμ μκΈ λκΈ°μ΄μ κ³ κ°λ€μ λ λͺ
μ μνμμκ² λΆλ°°νλ μμ
(whileλ¬Έ μ΄μ© μ, μ΄λ―Έ μκΈλ΄λΉ μνμ1μ΄ λͺ¨λ κ³ κ°μ dequeueν μν©)μ΄ λΆκ°νκ² λμ΄, μΌνλ μνμμ κ°λ
μ μ€λ λμ κ°λ
μ μ μ©νκ³ μ νμμ΅λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λ°©λ² λ°©λ²μΌλ‘λ νμλ²μ§Έ μ§μλ²μ§Έλ‘ κ°κ° ν λΉνλ λ°©λ²μ΄ μμ μ μμ§λ§ μνμμ΄ μ¬λ¬λͺ
μΌ κ²½μ° λ³΅μ‘ν΄ μ§ κ²μΌλ‘ μμν΄μ λ€λ₯Έ λ°©λ²μ μ°Ύμ λ³΄κ³ μ νμμ΅λλ€.
- μλ₯Ό λ€μ΄, μμ μ¬μ§μ²λΌ λ§μ½ μ΄ 6λͺ
μ κ³ κ°μ΄ μμ λ μκΈ μ°½κ΅¬μλ 2λͺ
μ μνμμ΄ μλ€κ³ μκ°ν΄λ΄
λλ€.
λ§ν¬λ 리μ€νΈμ λ€μ΄μλ κ³ κ°λ€μ νλμ© λΉΌμ
async
λ‘ λ³΄λ΄μ£Όλ©΄ λμμ μΌμ μ²λ¦¬νκ² λ κ²μ΄λ©°, 곡μ μμμΈ μκΈκ³ κ°λκΈ°μ΄μ μ κ·Όν μ μλ μ€λ λλ₯ΌSemaphore
μvalue
λ₯Ό ν΅ν΄ μ ννμ¬ 2λͺ μ© μ 무μ²λ¦¬κ° κ°λ₯νκ² λ©λλ€. κ·Έλ¬λ, μμ μ¬μ§μ²λΌ κ° κ³ κ°λΉ νλμ μ€λ λμμ μ 무μ²λ¦¬κ° λμ΄ μ΄ κ³ κ°μ μμ λ§λ μ€λ λκ° μμ±λκΈ° λλ¬Έμ μ΄λ€ λ°©μμ μ¬μ© ν΄μΌν μ§ λ€μ κ³ λ―Όν΄λ³΄μμΌ ν λΆλΆμ΄λΌκ³ μκ°ν©λλ€.
- μμ‘΄μ±κ΄λ¦¬λꡬμ κ°λ μ΄ν΄μ μ μ©
- LinkedList μλ£κ΅¬μ‘°μ μ΄ν΄μ μ μ©
- Generics κ°λ μ΄ν΄μ μ μ©
- νμ μΆμν λ° μΌλ°ν
- λκΈ° λΉλκΈ°μ μ΄ν΄μ μ μ©
- λμμ± νλ‘κ·Έλλ° κ°λ
μ μ΄ν΄
- GCDμ μ΄ν΄μ νμ©
- ν΄λ‘μ μΊ‘μ³μ μΊ‘μ³λ 리μ€νΈμ μ΄ν΄
- Apple Developer
- Swift Programming Language
- μν€λ°±κ³Ό
- github
- μΌκ³°λ·λ·