ν΄λ‘μ
- ν¨μμ ννμ ν¨μμ νΈμΆ ꡬ쑰λ₯Ό μ μ΄ν΄νλ€λ©΄ μ½κ² λ°μλ€μΌ μ μμ κ² κ°λ€.
// λ€μλ μ ꡬλΆν μ μμΌλ©΄ ν΄λ‘μ μ μ΄ν΄λ₯Ό λμΈ μ μλ€.
func example() {}
example // ν¨μ μ체
example() // ν¨μ νΈμΆ
ν΄λ‘μ κΈ°λ³Έ ꡬ쑰
ν΄λ‘μ ν€λμ ν΄λ‘μ λ°λ λΆλΆμ μ μ΄ν΄νμ.
{ (λ§€κ° λ³μ) -> λ¦¬ν΄ νμ
in // ν΄λ‘μ ν€λ
μ€ν ꡬ문 // ν΄λ‘μ λ°λ
}
μΈλΌμΈ ν΄λ‘μ (inline closure)
// μ½λλ₯Ό μλ΅νμ§ μκ³ ν΄λ‘μ ꡬ문 μ, ν¨μμ 맀κ°λ³μ λ΄μ ν΄λ‘μ κ° κ·Έλλ‘ λ€μ΄κ° νν
// => μΈλΌμΈ ν΄λ‘μ
getStudyWithMe(study: { () -> () in
print("μ£Όλ§μλ 곡λΆνκΈ°")
})
νΈλ μΌλ§ ν΄λ‘μ (trailing closure)
// ν¨μ λ€μ ν΄λ‘μ κ° μ€ν
// => νΈλ μΌλ§ ν΄λ‘μ (= νν ν΄λ‘μ )
getStudyWithMe() { () -> () in
print("μ£Όλ§μλ 곡λΆνκΈ°")
}
맀κ°λ³μ(+ λ°νκ°)κ° μλ ν΄λ‘μ
let result = { (number: Int) -> String in
return "νμ΄μ μ«μλ \(number)μ
λλ€."
}
ν΄λ‘μ ννμ λ³ν κ³Όμ
randomNumber(result: { (number: Int) -> String in
return "νμ΄μ μ«μλ \(number)μ
λλ€."
})
randomNumber(result: { (number) in
return "νμ΄μ μ«μλ \(number)μ
λλ€."
})
randomNumber(result: { (number) in
"νμ΄μ μ«μλ \(number)μ
λλ€."
})
randomNumber(result: {
"νμ΄μ μ«μλ \($0)μ
λλ€."
})
randomNumber {
"νμ΄μ μ«μλ \($0)μ
λλ€."
}
Non-escaping, Escaping ν΄λ‘μ
Non-Escaping ν΄λ‘μ
- ν¨μμ μ€νμ΄ μ’ λ£λκΈ° μ μ μ€νλλ ν΄λ‘μ
Escaping ν΄λ‘μ
- ν΄λ‘μ κ° ν¨μμ μΈμλ‘ μ λ¬λμ λ, ν¨μμ μ€νμ΄ μ’ λ£λ ν μ€νλλ ν΄λ‘μ
- μλ² ν΅μ μ΄ λλ νμ μΈλΆμ κ°μ μ λ¬νκ³ μ ν λ μ¬μ©νκ³ λ ν¨ (μ΄ μμ νμ λμ§ λ§κ³ , μ리λ₯Ό μ΄ν΄νλ κ²μ΄ μ€μ)
κ³ μ°¨ν¨μ
- map, filter, closure
- μΌλ° λ°λ³΅λ¬Έλ³΄λ€ μλκ° λΉ λ¦
- CFAbsoluteTimeGetCurrent() λ©μλλ‘ μκ° μ°¨μ΄λ₯Ό μΈ‘μ ν΄λ³΄μ.
- μ§μ§ κ³ μ°¨ν¨μλ₯Ό μ μ°λ κ²μ΄ μ€μνλ€λ κ²μ λ§μ΄ λλΌκ³ μλ€.
μΈλΆν¨μ, λ΄λΆν¨μ
- μΈλΆν¨μμ λ΄λΆν¨μμ μλͺ μ£ΌκΈ°μ κ΄μ°°λ μ€μν λΆλΆμΈ κ² κ°λ€.
- μΌλ°μ μΌλ‘ ν¨μκ° μ’ λ£λλ©΄ λ©λͺ¨λ¦¬μμ λ΄λ €κ°κ² λλ€.
- κ·Έλ λ€λ©΄ μΈλΆν¨μκ° μ’ λ£λμμ λ κ·Έ λ΄λΆμ μ‘΄μ¬νλ λ΄λΆν¨μ λν λ©λͺ¨λ¦¬μμ λ΄λ €κ°μΌ νλ κ²μ΄ μλκΉ?
- κ·Έλ°λ° λ΄λΆν¨μμ μλͺ μ£ΌκΈ°λ μΈλΆλ‘λΆν° μ°¨λ¨λμ΄ μλ€. μ΄λ₯Ό μλμ±μ΄λΌκ³ νννλ€.
- λ΄λΆν¨μλ₯Ό μΈλΆν¨μμμ λ°νν΄μ μ΄λ ν λ³μλ μμμ λ΄μμ μ¬μ©νκ² λλ©΄ μΈλΆμμλ μ κ·Όν μ μκ² λλ€.
- μ΄λ κ² λλ©΄ μΈλΆν¨μκ° μ’ λ£λμλ€κ³ νλλΌλ λ΄λΆν¨μλ κ³³κ³³μμ μ¬μ©ν μ μκ² λλ€.
- λ λμ΄κ° λλ κ²μ΄λ€.
- ν΄λ‘μ λ₯Ό μ¬μ©νκ² λμμ λ, μ£Όλ³ νκ²½μ ν¬ν¨λ λ³μλ μμκ° λ©λͺ¨λ¦¬μ λ¨μμμ μ μλ κ²μΈλ° μ΄λ₯Ό κ°μ΄ μΊ‘μ²λμλ€κ³ νννλ€.
- κ°μ μΊ‘μ²μ λν΄μλ λ€μ ν λ² μ΄ν΄λ³΄λλ‘ νμ.
νμμ μν΄ μν κ³Ό κ΄μ¬μ¬λ₯Ό λΆλ¦¬νλ€λ³΄λ©΄ μμ°μ€λ½κ² μν€ν μ²μ ν¨ν΄μ μ°Ύμλ³΄κ² λκ³ , κ·Έλ° μ½λ μμ± λ°©μμ κ°κΉμμ§λ€.
μ΄νμ 곡λΆλ ν΄μΌκ² μ§λ§ λ무 μ½λ§€μ΄μ§ λ§μ.
λ€νΈμν¬ μ½λμ κ΄ν΄
- Controllerμ μμ±νλ μ½λ λΌμΈ μκ° μ¦κ°νλ©΄μ μν κ³Ό μ½λμ λΆλ¦¬μ λν΄μ μκ°μ νκ² λλ€.
- λ³΄ν΅ λ€νΈμν¬ μ½λλ λ°λ‘ λΆλ¦¬ν΄μ μμ±νλ νΈμ΄λ©°, Manager, Service λ±λ±μ λ€μν λ¨μ΄λ₯Ό λΆμ¬μ ν΄λμ€λ₯Ό ꡬμ±νλ€.
- ν΅μ λ°μμ¨ κ°μ Controllerμμ μ¬μ©νκΈ° μν΄ escaping closureλ₯Ό μ¬μ©νλ€.
- indicator λλ progress barλ₯Ό μ¬μ©νμ¬ uxλ₯Ό κ³ λ €ν νμκ° μλ€.
'π± SeSAC' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[SeSAC] 220809 TIL (0) | 2022.08.12 |
---|---|
[SeSAC] 220808 TIL (0) | 2022.08.12 |
[SeSAC] 220804 TIL (0) | 2022.08.10 |
[SeSAC] 220803 TIL (0) | 2022.08.10 |
[SeSAC] 220802 TIL (0) | 2022.08.10 |