defer

연기하다, 뒤로 미루다

코드가 블록을 어떤 식으로 빠져나가든 간에 꼭 실행해야 하는 마무리 작업을 할 수 있도록 도와줌

  • defer 구문 내부에는 break, return 등과 같이 구문을 빠져나갈 수 있는 코드 또는 오류를 던지는 코드는 작성하면 안됨
  • 여러 개의 defer 구문이 하나의 범위 내부에 속해 있다면 맨 마지막에 작성된 구문부터 역순으로 실행
  • try-catch-finally와 비슷하지만, deferdo-catch말고 다른 블록에서도 사용 가능
for i in 0..<3 {
    defer {
        print("end!")
    }
    
    print("i: \(i)")
}
i: 0
end!
i: 1
end!
i: 2
end!

반복문 블럭이 끝날 때마다 defer 구문 내부 블럭의 내용이 실행되는 걸 확인할 수 있다.