defer{ }
문은 할 일을 미루는 코드 블록입니다.
defer{ }
문 안의 코드는 스코프(범위)가 종료되는 시점에 작동됩니다.
일반적으로 defer{ }
문은 어떠한 코드의 동작을 마무리하기 위해 사용합니다.
defer{ }
문은 최소 한 번의 접근(호출)이 있어야 해당 구문을 실행합니다.
defer{ }
문은 코드 불록에서 1개만 사용하는 것을 권장하고 있습니다. (여러 개 사용하면 복잡함)
✅ 일반적인 defer{ }문의 사용
defer{ }
문은 어떠한 코드의 동작을 마무리하기 위해 사용합니다.func hello(){ defer{ // 함수의 동작을 마무리 코드 print("hello() 함수 종료") } print("안녕") } hello() /*출력 결과 안녕 hello() 함수 종료 */
✅ 접근(호출)없이 종료되는 코드
defer{ }
문은 최소 한 번의 접근(호출)이 있어야 해당 구문을 실행합니다.func hello(){ if true{ print("안녕") return // 함수 탈출 } defer{ // return문에 의해 defer문이 작동하지 않는다. print("hello() 함수 종료") } } hello() /*출력 결과 안녕 */
✅ defer{ }문의 후입 선출 (Last In - First Out)
defer{ }
문은 후입 선출 방식의 특징을 가지고 있습니다.func number(){ defer{ print("1") } defer{ print("2") } defer{ print("3") } } number() /*출력 결과 3 2 1 */
✅ 반복문(for)에서의 defer{ }문
defer{ }
문 안의 코드는 스코프(범위)가 종료되는 시점에 작동됩니다.for i in 1...3{ print("func: \(i)") defer{ // 반복문의 사이클이 한 번씩 돌 때마다 실행 print("defer: \(i)") } } /* 출력 결과 func: 1 defer: 1 func: 2 defer: 2 func: 3 defer: 3 */