함수나 메서드가 반환되기 직전에 실행되도록 하는 코드 블록
defer 블록 내의 코드는 해당 블록이 정의된 범위(함수, 메서드, 루프 등)의 나머지 부분이 실행된 후에 실행됨.
defer 블록은 정의된 순서의 역순으로 실행
defer 블록은 현재 범위(함수, 메서드 등) 가 어떤 방식으로든 종료될 때 실행됨.
예시) return, break, throw 등으로 함수 또는 메서드가 종료될 때 해당 defer 블록이 실행됨.
여러 defer 블록이 있을 경우, 가장 마지막에 정의된 defer 블록이 가장 먼저 실행됨.
예시 코드
func exampleFunction() {
print("함수 시작")
defer {
print("첫 번째 defer 블록")
}
defer {
print("두 번째 defer 블록")
}
print("함수의 다른 코드")
// 함수의 나머지 부분
}
exampleFunction()
// 실행결과
// 함수 시작
// 함수의 다른 코드
// 두 번째 defer 블록
// 첫 번째 defer 블록