-
[Swift] - defer λ¬Έμ΄λ?iOS/π Swift 2021. 4. 29. 17:36
μ μΈλ λΈλ‘μ μ€νμ μ€μ½ν μ’ λ£ μ§μ κΉμ§ μ°κΈ°μν€λ ν€μλ
"νΈμΆ μμ κ³Ό μ€ν μμ μ΄ λ€λ₯΄λ€"
μ©λ : μ£Όλ‘ μ½λμμ μ¬μ©νλ μμμ μ 리ν λ μ¬μ©νλ€.
μμ) νμΌ μ²λ¦¬ μμ νμΌ λ«κΈ°
func processFile(path: String) { let file = FileHandle(forReadingAtPath: path) // Process if path.hasSuffic(".jpg") { return // closeFile()μ΄ νΈμΆλμ§ μμ } file?.closeFile() }
π‘ν΄κ²°
defer
λ¬Έ μμcloseFile
μ ꡬνν΄ λμΌλ©΄ ν¨μ λ°ν μ§μ μ μ€νμ 보μ₯ν μ μλ€.func processFile(path: String) { let file = FileHandle(forReadingAtPath: path) // Process defer { // μ€μ½ν μ’ λ£ μμ μΌλ‘ μ€ν μ°κΈ° file?.closeFile() } if path.hasSuffic(".jpg") { return } }
βοΈμ£Όμν μ
defer λ¬Έμ΄ μ°μ νΈμΆλμ΄μΌ μ’ λ£ μμ μ μ€νλ μ μλ€.
μλ μ½λλ
if λ¬Έ
μμprocessFile(path:)
κ° λ°νλμ΄,defer
λ¬Έμ΄ νΈμΆλμ§ μλλ€.ν΄κ²° : λ°λΌμ μ½λ λΈλ‘ μλ¨μ μ£Όλ‘
defer
λ¬Έμ μ μΈν΄λλλ€. (μμ μ½λ μ°Έκ³ )func processFile(path: String) { let file = FileHandle(forReadingAtPath: path) // Process if path.hasSuffic(".jpg") { return } // if λ¬Έμμ μ’ λ£λλ©΄ νΈμΆλμ§ μμ μ μλ€. defer { file?.closeFile() } }
π― μ¬λ¬ κ°μ defer λΈλ‘ νΈμΆ μμ
defer λ¬Έμ νΈμΆλλ μμμ μμμΌλ‘ μ€νλλ€. LIFO λ°©μμ΄λΌκ³ μκ°νλ©΄ μ΄ν΄κ° νΈνλ€.
μ΄μ κ°μ΄
defer
λ¬Έμ νΉμ§μ μ΄ν΄νμ§ λͺ»νκ³ κ΅¬ννλ©΄ λ Όλ¦¬μ μΈ μ€λ₯κ° λ°μν μ μλ€.κ·Έλμ λ³΄ν΅ defer νλμ μ½λλ₯Ό λͺ¨μ λλλ€.
func deferTestFunction() { defer { print("1") } defer { print("2") } defer { print("3") } } deferTestFunction() // prints "3" -> "2" -> "1"
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] - Capturing Values by Closures (κ°μ μΊ‘μ²νλ ν΄λ‘μ ) (0) 2021.05.07 [Swift] μ λ ν°(Selector)λ? (2) 2021.05.02 [Swift] - μμ (Inheritance) (0) 2021.04.21 [Swift] - Deinitialization (0) 2021.04.20 [Swift] CaseIterable μ΄λ? (0) 2021.03.29