적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift] defer 란?

hongssup_ 2023. 1. 20. 23:55
반응형
defer는 함수 내에서 작성 위치와 상관 없이 함수 종료 직전에 맨 마지막으로 실행되는 구문이다. 
하나의 함수 내에서 defer는 여러 번 호출 가능하며, 중첩해서 사용할 수도 있는데 그럴 경우 순차적으로 스택에 저장이 되어, 실행 순서는 가장 마지막에 있는 defer 구문이 가장 먼저 실행된다. 
그리고 defer를 읽기 전에 함수가 종료되면 defer는 실행되지 않는다. 

 

defer : 미루다, 연기하다. 

 

defer 란?

defer는 보통 함수 안에서 작성되는 클로저인데

작성된 위치와 상관없이 함수 종료 직전에 실행되는 구문

 

자신의 실행을 함수의 맨 마지막으로 미루는 것

 

defer가 호출되는 순서?

기본적으로 함수 내에서 defer 구문은 함수의 가장 마지막에 실행이 되는데, 

하나의 함수 내에서 defer는 여러 번 호출 가능하며, 중첩해서 사용할 수도 있다. 

그럴 경우, 먼저 읽은 defer 부터 stack에 쌓이는 식으로, 가장 마지막에 읽은 defer가 가장 먼저 실행되고 가장 처음 읽은 defer가 가장 마지막에 실행되는 역순으로 실행이 된다. 

중첩하여 실행했을 경우에도 실행 순서는 가장 바깥쪽 defer부터 먼저 실행이 된다. 

+ defer를 읽기 전에 함수가 종료되면 defer는 실행되지 않는다. 

 


참고 

https://babbab2.tistory.com/80

728x90
반응형